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 番目のオブジェクト。

戻り値

Int32

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できない場合は、an ArgumentException がスローされます。

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

注意 (呼び出し元)

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

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

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

適用対象

こちらもご覧ください