共用方式為


在集合內比較和排序

更新:2007 年 11 月

System.Collections 類別幾乎在所有牽涉集合管理 (不論是搜尋要移除的元素,或是傳回索引鍵值組的) 的處理序中執行比較。

有兩個建構被用來比較。Equals 方法 (繼承或衍生自 Object) 只是傳回布林值 (Boolean) 來指示兩個物件是否相等。IComparable.CompareTo 方法和 IComparer.Compare 方法會傳回整數,指出兩個值如何相互關聯來進行比較。Equals 是用於等式檢查;IComparable.CompareToIComparer.Compare 方法與其在泛型介面上的對應方法,還有 IComparer<T>.CompareIComparable<T>.CompareTo 方法則是用於排序。

比較可以在集合元素之間,或元素和指定值之間進行。若未明確指定比較元 (Comparer),則被比較的物件中至少要有一個實作 IComparable 介面,並且要能夠將本身與其他物件相比較。

某些類別具有可接受 IComparer 實作做為參數的方法。若用了這些方法,且 IComparer 參數並非 Null 參考 (在 Visual Basic 中為 Nothing),則相比較的物件本身就不一定需要實作 IComparable。然而,在所有可做為清單集合值或做為字典集合索引鍵的類別上,實作 IComparable 總是很好的方式。

有些字典集合的建構函式多載接受 IComparer 實作,在需要進行比較時即可用它來比較索引鍵。Array 具有其 Sort 方法的多載且接受 IComparer 實作,它只用在對 Sort 方法的特定呼叫之時。

系統目前的文化特性設定可以影響集合中的比較和排序。依預設,Collections 類別中的比較和排序需要區分文化特性。若要忽略文化特性設定,以能取得一致的比較和排序結果,請使用 InvariantCulture 配合接受 CultureInfo 的成員多載。如需詳細資訊,請參閱在集合中執行不區分文化特性的字串作業在陣列中執行區分文化特性的字串作業

請參閱

參考

IComparer

IComparer<T>

IComparable

IComparable<T>

其他資源

建立和操作集合