Tuple<T1,T2,T3>.IComparable.CompareTo(Object) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Сравнивает текущий объект Tuple<T1,T2,T3> с заданным объектом и возвращает целое число, указывающее, находится ли текущий объект в той же позиции, что и указанный объект, после него или перед ним в порядке сортировки.
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,T3>.
Примеры
В следующем примере создается массив Tuple<T1,T2,T3> объектов, компоненты которых состоят из имени учащегося, средней оценки теста и количества тестов. Он отображает компоненты каждого кортежа в массиве в несортированный порядок, сортирует массив, а затем вызывает ToString отображение каждого кортежа в отсортированных порядках. Выходные данные показывают, что массив был отсортирован по его первому компоненту. Обратите внимание, что в примере метод напрямую не вызывается Tuple<T1,T2,T3>.IComparable.CompareTo . Этот метод вызывается неявно методом Sort(Array) для каждого элемента в массиве.
using System;
public class Example
{
public static void Main()
{
Tuple<string, double, int>[] scores =
{ Tuple.Create("Jack", 78.8, 8),
Tuple.Create("Abbey", 92.1, 9),
Tuple.Create("Dave", 88.3, 9),
Tuple.Create("Sam", 91.7, 8),
Tuple.Create("Ed", 71.2, 5),
Tuple.Create("Penelope", 82.9, 8),
Tuple.Create("Linda", 99.0, 9),
Tuple.Create("Judith", 84.3, 9) };
Console.WriteLine("The values in unsorted order:");
foreach (var score in scores)
Console.WriteLine(score.ToString());
Console.WriteLine();
Array.Sort(scores);
Console.WriteLine("The values in sorted order:");
foreach (var score in scores)
Console.WriteLine(score.ToString());
}
}
// The example displays the following output;
// The values in unsorted order:
// (Jack, 78.8, 8)
// (Abbey, 92.1, 9)
// (Dave, 88.3, 9)
// (Sam, 91.7, 8)
// (Ed, 71.2, 5)
// (Penelope, 82.9, 8)
// (Linda, 99, 9)
// (Judith, 84.3, 9)
//
// The values in sorted order:
// (Abbey, 92.1, 9)
// (Dave, 88.3, 9)
// (Ed, 71.2, 5)
// (Jack, 78.8, 8)
// (Judith, 84.3, 9)
// (Linda, 99, 9)
// (Penelope, 82.9, 8)
// (Sam, 91.7, 8)
open System
let scores =
[| Tuple.Create("Jack", 78.8, 8)
Tuple.Create("Abbey", 92.1, 9)
Tuple.Create("Dave", 88.3, 9)
Tuple.Create("Sam", 91.7, 8)
Tuple.Create("Ed", 71.2, 5)
Tuple.Create("Penelope", 82.9, 8)
Tuple.Create("Linda", 99.0, 9)
Tuple.Create("Judith", 84.3, 9) |]
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.8, 8)
// (Abbey, 92.1, 9)
// (Dave, 88.3, 9)
// (Sam, 91.7, 8)
// (Ed, 71.2, 5)
// (Penelope, 82.9, 8)
// (Linda, 99, 9)
// (Judith, 84.3, 9)
//
// The values in sorted order:
// (Abbey, 92.1, 9)
// (Dave, 88.3, 9)
// (Ed, 71.2, 5)
// (Jack, 78.8, 8)
// (Judith, 84.3, 9)
// (Linda, 99, 9)
// (Penelope, 82.9, 8)
// (Sam, 91.7, 8)
Module Example
Public Sub Main()
Dim scores() =
{ Tuple.Create("Jack", 78.8, 8),
Tuple.Create("Abbey", 92.1, 9),
Tuple.Create("Dave", 88.3, 9),
Tuple.Create("Sam", 91.7, 8),
Tuple.Create("Ed", 71.2, 5),
Tuple.Create("Penelope", 82.9, 8),
Tuple.Create("Linda", 99.0, 9),
Tuple.Create("Judith", 84.3, 9) }
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.8, 8)
' (Abbey, 92.1, 9)
' (Dave, 88.3, 9)
' (Sam, 91.7, 8)
' (Ed, 71.2, 5)
' (Penelope, 82.9, 8)
' (Linda, 99, 9)
' (Judith, 84.3, 9)
'
' The values in sorted order:
' (Abbey, 92.1, 9)
' (Dave, 88.3, 9)
' (Ed, 71.2, 5)
' (Jack, 78.8, 8)
' (Judith, 84.3, 9)
' (Linda, 99, 9)
' (Penelope, 82.9, 8)
' (Sam, 91.7, 8)
Комментарии
Этот член представляет собой явную реализацию члена интерфейса. Он может использоваться, только если экземпляр Tuple<T1,T2,T3> приведен к типу интерфейса IComparable.
Этот метод предоставляет реализацию IComparable.CompareTo для Tuple<T1,T2,T3> класса. Хотя метод можно вызывать напрямую, он чаще всего вызывается перегрузками по умолчанию методов сортировки коллекций, например Array.Sort(Array) и SortedList.Addдля упорядочения элементов коллекции.
Внимание!
Этот Tuple<T1,T2,T3>.IComparable.CompareTo метод предназначен для использования в операциях сортировки. Его не следует использовать, если основной целью сравнения является определение того, равны ли два объекта. Чтобы определить, равны ли два объекта, вызовите Equals метод.
Метод Tuple<T1,T2,T3>.IComparable.CompareTo использует сравнение объектов по умолчанию для сравнения каждого компонента.