2012-03-05 17 views
-1

(我知道這是蹩腳的。)C#中是否有任何區間容器?C中的區間容器#

我感興趣的是它結合了內部重疊,並且我可以找到不在容器中但在特定間隔內的間隔。

回答

0

使用TimeSpan結構。

+0

否我需要例如long的時間間隔 – user629926 2012-03-05 19:20:35

0

不可以。您應該可以使用LINQ對簡單的數組對進行檢查。

+0

我認爲@Saeed Amiri的'Interval'示例將使OP'代碼更加清晰。 – zmbq 2012-03-05 22:39:36

1

你應該執行類似下面的類:

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,這可以通過結構完成,結構更瑣碎的方式在這個情況下,我個人使用的類簡單地處理空的區間(事實上,如果start - end> = 0,那麼區間是空的,而不是使用預先設定的空區間,我想我們可以將它設置爲null。但我認爲這是句法suger。

+0

我認爲一個結構更適合這個目的。 – zmbq 2012-03-05 22:38:37

+0

@zmbq,同意,但我使用類來簡單地檢查null而不是空的間隔。 – 2012-03-05 22:40:08

+0

哦,那麼一個結構是*絕對*更好的這個目的。這就像是讓int成爲一個類,所以你可以使用null來表示零...... – zmbq 2012-03-05 22:42:09