IComparer.Compare(Object, Object) 方法

定義

比較兩個物件並傳回值,指出其中一個物件為小於、等於或大於另一個物件。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);
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

要比較的第二個物件。The second object to compare.

傳回

Int32

帶正負號的整數,表示 xy 的相對值: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.

例外狀況

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.

適用於

另請參閱