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

定義

2 つのオブジェクトを比較して、一方が他方より小さいか、同じか、または大きいかを示す値を返します。Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.

`` 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

戻り値

Int32

`x``y` の相対値を示す符号付き整数。次の表を参照してください。A signed integer that indicates the relative values of `x` and `y`, as shown in the following table.

Value 意味Meaning
ゼロより小さいLess than zero `x``y`がスローされます。`x` is less than `y`.
ゼロZero `x``y` は等しい。`x` equals `y`.
ゼロより大きいGreater than zero `x``y`がスローされます。`x` is greater than `y`.

例外

`x` または `y` が、`T` 型にキャストできない型です。`x` or `y` is of a type that cannot be cast to type `T`.

または-or- `x` および `y` が、IComparable<T> ジェネリック インターフェイスと IComparable インターフェイスのいずれも実装していません。`x` and `y` do not implement either the IComparable<T> generic interface or the IComparable interface.

例

``````
// 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` によって指定された型にキャストする必要があります。This method is a wrapper for the Compare(T, T) method, so `obj` must be cast to the type specified by the generic argument `T` of the current instance. `T`にキャストできない場合は、ArgumentException がスローされます。If it cannot be cast to `T`, an ArgumentException is thrown.

注意 (呼び出し元)

Compare(T, T)System.Collections.Generic.EqualityComparer`1.Equals(\`0,\`0) の動作は、カルチャの区別と大文字小文字の区別の点で異なります。 Compare(T, T) and System.Collections.Generic.EqualityComparer`1.Equals(\`0,\`0) behave differently in terms of culture-sensitivity and case-sensitivity. 文字列比較の場合は、`比較子<文字列>`より StringComparer クラスを使用することをお勧めします。For string comparisons, the StringComparer class is recommended over `Comparer<String>`. StringComparer クラスのプロパティは、カルチャの区別と大文字と小文字の区別の組み合わせが異なる文字列比較を実行する定義済みのインスタンスを返します。Properties of the StringComparer class return predefined instances that perform string comparisons with different combinations of culture-sensitivity and case-sensitivity. 大文字と小文字の区別およびカルチャの区別は、同じ StringComparer インスタンスのメンバー間で一貫しています。The case-sensitivity and culture-sensitivity are consistent among the members of the same StringComparer instance. カルチャ固有の比較の詳細については、System.Globalization 名前空間と[グローバリゼーションおよびローカリゼーション](/dotnet/standard/globalization-localization/)に関する説明を参照してください。For more information on culture-specific comparisons, see the System.Globalization namespace and [Globalization and Localization](/dotnet/standard/globalization-localization/).