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

比較する最初のオブジェクト。The first object to compare.

y
Object

比較する 2 番目のオブジェクト。The second object to compare.

戻り値

Int32

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

例外

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

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

次の例では、インターフェイスを使用して IComparer 文字列の配列を並べ替えています。The following example uses the IComparer interface to sort a string array. この例では、 Compare メソッドはクラスを使用して実装され、 CaseInsensitiveComparer 配列の内容の順序を逆にします。In this example, the Compare method is implemented using the CaseInsensitiveComparer class to reverse the order of the contents of the array.

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.

適用対象

こちらもご覧ください