Comparer<T>.IComparer.Compare(Object, Object) メソッド

定義

2 つのオブジェクトを比較して、一方が他方より小さいか、同じか、または大きいかを示す値を返します。

 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

比較する 2 番目のオブジェクト。

戻り値

xy の相対値を示す符号付き整数。次の表を参照してください。

[値] 説明
0 より小さい値xy より小さい値です。
ゼロxy は等しい。
0 より大きい値xy より大きくなっています。

実装

例外

x または y が、T 型にキャストできない型です。

- または -

x および y が、IComparable<T> ジェネリック インターフェイスと IComparable インターフェイスのいずれも実装していません。

次の例は、 メソッドを使用 IComparer.Compare して 2 つのオブジェクトを比較する方法を示しています。 この例は、 クラスに対して提供される大きな例の 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())

注釈

このメソッドは メソッドのラッパーであるためobj、現在のCompare(T, T)インスタンスのジェネリック引数Tで指定された型にキャストする必要があります。 にキャスト Tできない場合は、 ArgumentException がスローされます。

null参照型との比較は許可され、例外は生成されません。 並べ替えの場合、 null は他のどのオブジェクトよりも小さいと見なされます。

注意 (呼び出し元)

Compare(T, T) と の Equals(T, T) 動作は、カルチャの感度と大文字と小文字の区別の点で異なります。

文字列比較の場合、 クラスは StringComparer よりも Comparer<String>推奨されます。 クラスのプロパティは、 StringComparer カルチャの区別と大文字と小文字の区別の異なる組み合わせで文字列比較を実行する定義済みのインスタンスを返します。 大文字と小文字の区別とカルチャの区別は、同じ StringComparer インスタンスのメンバー間で一貫しています。

カルチャ固有の比較の詳細については、名前空間とグローバリゼーションとローカライズSystem.Globalization関するページを参照してください。

適用対象

こちらもご覧ください