Tuple<T1,T2>.IComparable.CompareTo(Object) Метод

Определение

Сравнивает текущий объект с указанным объектом и возвращает целое число, указывающее, является ли текущий Tuple<T1,T2> объект до, после или в той же позиции, что и указанный объект в порядке сортировки.

 virtual int System.IComparable.CompareTo(System::Object ^ obj) = IComparable::CompareTo;
int IComparable.CompareTo(object obj);
abstract member System.IComparable.CompareTo : obj -> int
override this.System.IComparable.CompareTo : obj -> int
Function CompareTo (obj As Object) As Integer Implements IComparable.CompareTo

Параметры

obj
Object

Объект для сравнения с текущим экземпляром.

Возвращаемое значение

Целое число со знаком, указывающее относительную позицию этого экземпляра и obj в порядке сортировки, как показано в следующей таблице.

Ценность Описание
Отрицательное целое число Этот экземпляр предшествует obj.
Нуля Этот экземпляр имеет obj ту же позицию в порядке сортировки.
Положительное целое число Этот экземпляр следует obj.

Реализации

Исключения

obj не Tuple<T1,T2> является объектом.

Примеры

В следующем примере создается массив объектов, состоящих Tuple<T1,T2> из имени учащегося и оценки тестов. Он отображает компонент каждого кортежа в массиве в неортализованном порядке, сортирует массив, а затем вызывает ToString отображение значения каждого кортежа в отсортированного порядка. Выходные данные показывают, что массив был отсортирован по первому компоненту. Обратите внимание, что в примере метод не вызывается напрямую IComparable.CompareTo(Object) . Этот метод вызывается неявно методом Sort(Array) для каждого элемента в массиве.

using System;

public class Example
{
   public static void Main()
   {
      Tuple<string, Nullable<int>>[] scores = 
                    { new Tuple<string, Nullable<int>>("Jack", 78),
                      new Tuple<string, Nullable<int>>("Abbey", 92), 
                      new Tuple<string, Nullable<int>>("Dave", 88),
                      new Tuple<string, Nullable<int>>("Sam", 91), 
                      new Tuple<string, Nullable<int>>("Ed", null),
                      new Tuple<string, Nullable<int>>("Penelope", 82),
                      new Tuple<string, Nullable<int>>("Linda", 99),
                      new Tuple<string, Nullable<int>>("Judith", 84) };

      Console.WriteLine("The values in unsorted order:");
      foreach (Tuple<string, Nullable<int>> score in scores)
         Console.WriteLine(score.ToString());

      Console.WriteLine();

      Array.Sort(scores);

      Console.WriteLine("The values in sorted order:");
      foreach (Tuple<string, Nullable<int>> score in scores)
         Console.WriteLine(score.ToString());
   }
}
// The example displays the following output;
//       The values in unsorted order:
//       (Jack, 78)
//       (Abbey, 92)
//       (Dave, 88)
//       (Sam, 91)
//       (Ed, )
//       (Penelope, 82)
//       (Linda, 99)
//       (Judith, 84)
//       
//       The values in sorted order:
//       (Abbey, 92)
//       (Dave, 88)
//       (Ed, )
//       (Jack, 78)
//       (Judith, 84)
//       (Linda, 99)
//       (Penelope, 82)
//       (Sam, 91)
open System

let scores = 
    [| Tuple<string, Nullable<int>>("Jack", 78)
       Tuple<string, Nullable<int>>("Abbey", 92) 
       Tuple<string, Nullable<int>>("Dave", 88)
       Tuple<string, Nullable<int>>("Sam", 91) 
       Tuple<string, Nullable<int>>("Ed", Nullable())
       Tuple<string, Nullable<int>>("Penelope", 82)
       Tuple<string, Nullable<int>>("Linda", 99)
       Tuple<string, Nullable<int>>("Judith", 84) |]

printfn "The values in unsorted order:"
for score in scores do
    printfn $"{score}"

printfn ""

Array.Sort scores

printfn "The values in sorted order:"
for score in scores do
    printfn $"{score}"
// The example displays the following output
//       The values in unsorted order:
//       (Jack, 78)
//       (Abbey, 92)
//       (Dave, 88)
//       (Sam, 91)
//       (Ed, )
//       (Penelope, 82)
//       (Linda, 99)
//       (Judith, 84)
//       
//       The values in sorted order:
//       (Abbey, 92)
//       (Dave, 88)
//       (Ed, )
//       (Jack, 78)
//       (Judith, 84)
//       (Linda, 99)
//       (Penelope, 82)
//       (Sam, 91)
Module Example
   Public Sub Main()
      Dim scores() As Tuple(Of String, Nullable(Of Integer)) = 
                      { New Tuple(Of String, Nullable(Of Integer))("Jack", 78),
                        New Tuple(Of String, Nullable(Of Integer))("Abbey", 92), 
                        New Tuple(Of String, Nullable(Of Integer))("Dave", 88),
                        New Tuple(Of String, Nullable(Of Integer))("Sam", 91), 
                        New Tuple(Of String, Nullable(Of Integer))("Ed", Nothing),
                        New Tuple(Of String, Nullable(Of Integer))("Penelope", 82),
                        New Tuple(Of String, Nullable(Of Integer))("Linda", 99),
                        New Tuple(Of String, Nullable(Of Integer))("Judith", 84) }

      Console.WriteLine("The values in unsorted order:")
      For Each score In scores
         Console.WriteLine(score.ToString())
      Next
      Console.WriteLine()

      Array.Sort(scores)

      Console.WriteLine("The values in sorted order:")
      For Each score In scores
         Console.WriteLine(score.ToString())
      Next
   End Sub
End Module
' The example displays the following output;
'       The values in unsorted order:
'       (Jack, 78)
'       (Abbey, 92)
'       (Dave, 88)
'       (Sam, 91)
'       (Ed, )
'       (Penelope, 82)
'       (Linda, 99)
'       (Judith, 84)
'       
'       The values in sorted order:
'       (Abbey, 92)
'       (Dave, 88)
'       (Ed, )
'       (Jack, 78)
'       (Judith, 84)
'       (Linda, 99)
'       (Penelope, 82)
'       (Sam, 91)

Комментарии

Этот член является явной реализацией элемента интерфейса. Его можно использовать только в том случае, если Tuple<T1,T2> экземпляр приведение к интерфейсу IComparable .

Этот метод предоставляет реализацию IComparable.CompareTo для Tuple<T1,T2> класса. Хотя метод можно вызывать напрямую, он чаще всего вызывается перегрузками по умолчанию методов сортировки коллекций, например Array.Sort(Array) и SortedList.Addдля упорядочивания элементов коллекции.

Предостережение

Метод Tuple<T1,T2>.IComparable.CompareTo предназначен для использования в операциях сортировки. Его не следует использовать, если основная цель сравнения заключается в определении того, равны ли два объекта. Чтобы определить, равны ли два объекта, вызовите Equals метод.

Метод Tuple<T1,T2>.IComparable.CompareTo использует сравнение объектов по умолчанию для сравнения каждого компонента.

Применяется к

См. также раздел