C#中有没有区间容器?
我感兴趣的是,它结合了重叠的内部结构,并且我可以找到不在容器中但位于特定间隔中的间隔。
发布于 2012-03-06 03:32:40
一个叫Jani Giannoudis的人在CodeProject上发布了一个.NET time period library,可能符合你的需求。
发布于 2012-03-06 06:37:19
您应该实现如下所示的类:
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在评论中提到的,这可以通过结构来完成,结构在这种情况下是更简单的方式,我个人使用类来简单地处理空的间隔(实际上如果开始-结束>= 0,那么间隔是空的,而不是使用预先定义的空间隔,我认为我们可以将它设置为null。但我认为这是语法suger。
发布于 2012-03-06 03:20:09
不是的。您应该能够使用LINQ在简单的配对数组上执行此类检查。
https://stackoverflow.com/questions/9572494
复制相似问题