2010-01-03 125 views
2

我有一個具有屬性的對象;的startIndex,endIndex的C#在2個索引上進行二進制搜索

我能夠做到通過實施基於的startIndex二進制搜索如下:然而以相同的重複對象

 int IComparable.CompareTo(object obj) 
     { 
      Repeat r = (Repeat)obj; 
      return this.startIndex.CompareTo(r.startIndex); 
     } 

I D喜歡做的二進制搜索還對年底指數分別。

我該怎麼做?

謝謝。

+1

您可能想要使用IComparable的類型化版本,如IComparable ,它將定義CompareTo(Repeat r)而不是無類型對象。 – 2010-01-03 03:29:09

回答

4

如果您使用的Array.BinarySearch()List<T>.BinarySearch()方法,您可以使用需要一個IComparerIComparer<T>過載。然後,您可以在單獨的類中實現比較語義,並在您想要進行搜索時將其傳入。

+0

我使用列表。我看到列表上的二進制搜索也需要一個IComparer。那應該是吧? – DarthVader 2010-01-03 03:27:54

+0

是的,它應該工作。 – SLaks 2010-01-03 03:29:10

+0

太好了。謝謝 :) – DarthVader 2010-01-03 03:30:53