Вы должны реализовать класс, как показано ниже:
public class Interval
{
public long Start {get;set;}
public long End{get;set;}
public bool IsIn(Interval interval)
{
return Start >= interval.Start && End < interval.End;
}
public Interval Intersection(Interval interval)
{
if (interval == null)
return false;
if (IsIn(interval))
return interval;
if (interval.IsIn(this))
return this;
if ....
}
public Interval Union(Interval interval)
{....}
public bool IsIn(List<Interval> intervals)
{
return intrvals.Any(x=>IsIn(x));
}
public List<Interval> Intersect(List<Interval> intervals)
{....}
public List<Interval> Union(List<Interval> intervals)
{....}
}
Редактировать: Как упомянуто в комментариях @zmbq, это может быть сделано с помощью struct, в таких ситуациях struct является более тривиальным способомЯ лично использовал класс, чтобы просто иметь дело с пустыми интервалами (На самом деле, если start - end> = 0, тогда интервал пуст, вместо использования предопределенного пустого интервала, я думаю, мы можем установить его на ноль. Но я думаю, что это синтаксис suger.