C#中的间隔容器

本文关键字: | 更新日期: 2023-09-27 18:26:52

C#中是否存在区间容器?

我感兴趣的是它结合了重叠的内部,并且我可以找到不在容器中但在特定间隔中的间隔。

C#中的间隔容器

Jani Giannoudis在CodeProject上发布了一个.NET时间段库,可能符合您的需求。

您应该实现如下类:

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,那么区间是空的,而不是使用预定义的空区间,我认为我们可以将其设置为null。但我认为这是语法suger。

否。您应该能够使用LINQ对简单的对数组执行这样的检查。

使用TimeSpan结构。

相关文章:
  • 没有找到相关文章