# 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.

``````public:
int Compare(System::Object ^ x, System::Object ^ y);``````
``public int Compare (object x, object y);``
``abstract member Compare : obj * obj -> int``
``Public Function Compare (x As Object, y As Object) As Integer``

x
Object

y
Object

#### 戻り値

Int32

`x``y` の相対値を示す符号付き整数。A signed integer that indicates the relative values of `x` and `y`:
- 0 より小さい場合、`x``y` よりも小さくなります。- If less than 0, `x` is less than `y`.
- 0 の場合、`x``y` と等しくなります。- If 0, `x` equals `y`.
- 0 より大きい場合、`x``y` よりも大きくなります。- If greater than 0, `x` is greater than `y`.

#### 例外

`x``y` が、いずれも IComparable インターフェイスを実装していません。Neither `x` nor `y` implements the IComparable interface.

- または --or- `x``y` の型が異なっていて、両者を比較できません。`x` and `y` are of different types and neither one can handle comparisons with the other.

## 例

``````using System;
using System.Collections;

public class Example
{
public class ReverserClass : IComparer
{
// Call CaseInsensitiveComparer.Compare with the parameters reversed.
int IComparer.Compare(Object x, Object y)
{
return ((new CaseInsensitiveComparer()).Compare(y, x));
}
}

public static void Main()
{
// Initialize a string array.
string[] words = { "The", "quick", "brown", "fox", "jumps", "over",
"the", "lazy", "dog" };

// Display the array values.
Console.WriteLine("The array initially contains the following values:" );
PrintIndexAndValues(words);

// Sort the array values using the default comparer.
Array.Sort(words);
Console.WriteLine("After sorting with the default comparer:" );
PrintIndexAndValues(words);

// Sort the array values using the reverse case-insensitive comparer.
Array.Sort(words, new ReverserClass());
Console.WriteLine("After sorting with the reverse case-insensitive comparer:");
PrintIndexAndValues(words);
}

public static void PrintIndexAndValues(IEnumerable list)
{
int i = 0;
foreach (var item in list )
Console.WriteLine(\$"   [{i++}]:  {item}");

Console.WriteLine();
}
}
// The example displays the following output:
//       The array initially contains the following values:
//          [0]:  The
//          [1]:  quick
//          [2]:  brown
//          [3]:  fox
//          [4]:  jumps
//          [5]:  over
//          [6]:  the
//          [7]:  lazy
//          [8]:  dog
//
//       After sorting with the default comparer:
//          [0]:  brown
//          [1]:  dog
//          [2]:  fox
//          [3]:  jumps
//          [4]:  lazy
//          [5]:  over
//          [6]:  quick
//          [7]:  the
//          [8]:  The
//
//       After sorting with the reverse case-insensitive comparer:
//          [0]:  the
//          [1]:  The
//          [2]:  quick
//          [3]:  over
//          [4]:  lazy
//          [5]:  jumps
//          [6]:  fox
//          [7]:  dog
//          [8]:  brown
``````
``````Imports System.Collections

Public Class Example
Public Class ReverserClass : Implements IComparer
' Call CaseInsensitiveComparer.Compare with the parameters reversed.
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
Implements IComparer.Compare
Return New CaseInsensitiveComparer().Compare(y, x)
End Function
End Class

Public Shared Sub Main()
' Initialize a string array.
Dim words() As String = { "The", "quick", "brown", "fox", "jumps", "over",
"the", "lazy", "dog" }

' Display the array values.
Console.WriteLine("The array initially contains the following values:")
PrintIndexAndValues(words)

' Sort the array values of the ArrayList using the default comparer.
Array.Sort(words)
Console.WriteLine("After sorting with the default comparer:")
PrintIndexAndValues(words)

' Sort the array values using the reverse case-insensitive comparer.
Array.Sort(words, new ReverserClass())
Console.WriteLine("After sorting with the reverse case-insensitive comparer:")
PrintIndexAndValues(words)
End Sub

Public Shared Sub PrintIndexAndValues(list As IEnumerable)
Dim i As Integer = 0
For Each item In  list
Console.WriteLine(\$"   [{i}]:  {item}")
i += 1
Next
Console.WriteLine()
End Sub
End Class
' The example displays the following output:
'       The array initially contains the following values:
'          [0]:  The
'          [1]:  quick
'          [2]:  brown
'          [3]:  fox
'          [4]:  jumps
'          [5]:  over
'          [6]:  the
'          [7]:  lazy
'          [8]:  dog
'
'       After sorting with the default comparer:
'          [0]:  brown
'          [1]:  dog
'          [2]:  fox
'          [3]:  jumps
'          [4]:  lazy
'          [5]:  over
'          [6]:  quick
'          [7]:  the
'          [8]:  The
'
'       After sorting with the reverse case-insensitive comparer:
'          [0]:  the
'          [1]:  The
'          [2]:  quick
'          [3]:  over
'          [4]:  lazy
'          [5]:  jumps
'          [6]:  fox
'          [7]:  dog
'          [8]:  brown

``````

## 注釈

いずれかのパラメーターのメソッドを使用することをお勧めし CompareTo ます。The preferred implementation is to use the CompareTo method of one of the parameters.

`null`任意の型との比較が可能であり、を使用する場合は例外が生成されません IComparableComparing `null` with any type is allowed and does not generate an exception when using IComparable. 並べ替えを行う場合、 `null` は他のオブジェクトより小さいと見なされます。When sorting, `null` is considered to be less than any other object.