Comparer<T>.IComparer.Compare(Object, Object) 方法

定義

比較兩個物件並傳回值,指出其中一個物件為小於、等於或大於另一個物件。

 virtual int System.Collections.IComparer.Compare(System::Object ^ x, System::Object ^ y) = System::Collections::IComparer::Compare;
int IComparer.Compare (object x, object y);
abstract member System.Collections.IComparer.Compare : obj * obj -> int
override this.System.Collections.IComparer.Compare : obj * obj -> int
Function Compare (x As Object, y As Object) As Integer Implements IComparer.Compare

參數

x
Object

要比較的第一個物件。

y
Object

要比較的第二個物件。

傳回

帶正負號的整數,表示 xy 的相對值,如下表所示。

意義
小於零x 小於 y
x等於 y
大於零x 大於 y

實作

例外狀況

xy 的型別無法轉型為型別 T

-或-

xy 不實作 IComparable<T> 泛型介面或 IComparable 介面。

範例

下列範例示範如何使用 IComparer.Compare 方法來比較兩個物件。 這個範例是提供給 類別之較大範例的 Comparer<T> 一部分。


// This explicit interface implementation
// compares first by the length.
// Returns -1 because the length of BoxA
// is less than the length of BoxB.
BoxLengthFirst LengthFirst = new BoxLengthFirst();

Comparer<Box> bc = (Comparer<Box>) LengthFirst;

Box BoxA = new Box(2, 6, 8);
Box BoxB = new Box(10, 12, 14);
int x = LengthFirst.Compare(BoxA, BoxB);
Console.WriteLine();
Console.WriteLine(x.ToString());

' This explicit interface implementation
' compares first by the length.
' Returns -1 because the length of BoxA
' is less than the length of BoxB.
Dim LengthFirst As New BoxLengthFirst()

Dim bc As Comparer(Of Box) = CType(LengthFirst, Comparer(Of Box))

Dim BoxA As New Box(2, 6, 8)
Dim BoxB As New Box(10, 12, 14)
Dim x As Integer = LengthFirst.Compare(BoxA, BoxB)
Console.WriteLine()
Console.WriteLine(x.ToString())

備註

這個方法是 方法的 Compare(T, T) 包裝函式,因此 obj 必須轉換成目前實例之泛型自變數 T 所指定的型別。 如果無法轉換成 TArgumentException 則會擲回 。

null允許與任何參考型別比較,而且不會產生例外狀況。 排序時, null 會被視為小於任何其他物件。

給呼叫者的注意事項

Compare(T, T)Equals(T, T) 在區分文化特性和區分大小寫方面的行為不同。

針對字串比較,StringComparer建議使用 類別。Comparer<String> 類別的屬性會 StringComparer 傳回預先定義的實例,這些實例會以不同文化特性敏感度和區分大小寫的組合來執行字串比較。 區分大小寫和文化特性敏感度在相同 StringComparer 實例的成員之間保持一致。

如需特定文化特性比較的詳細資訊,請參閱 System.Globalization 命名空間和 全球化和當地語系化

適用於

另請參閱