Tuple<T1,T2,T3>.IComparable.CompareTo(Object) 方法

定义

比较当前 Tuple<T1,T2,T3> 对象与指定对象,并返回一个整数,该整数指示当前对象在排序顺序中的位置:是在指定对象之前、之后还是在与指定对象相同的位置。Compares the current Tuple<T1,T2,T3> object to a specified object and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order.

 virtual int System.IComparable.CompareTo(System::Object ^ obj) = IComparable::CompareTo;
int IComparable.CompareTo (object obj);
Function CompareTo (obj As Object) As Integer Implements IComparable.CompareTo

参数

obj
Object

要与当前实例进行比较的对象。An object to compare with the current instance.

返回

一个带符号整数,指示此实例和 obj 在排序顺序中的相对位置,如下表所示。A signed integer that indicates the relative position of this instance and obj in the sort order, as shown in the following table.

Value 说明Description
负整数A negative integer 此实例位于 obj 之前。This instance precedes obj.
Zero 此实例在排序顺序中的位置与 obj 相同。This instance and obj have the same position in the sort order.
正整数A positive integer 此实例位于 obj 之后。This instance follows obj.

实现

异常

obj 不是 Tuple<T1,T2,T3> 对象。obj is not a Tuple<T1,T2,T3> object.

示例

下面的示例创建一个对象数组Tuple<T1,T2,T3> , 这些对象的组件包含学生姓名、平均测试分数和测试数。The following example creates an array of Tuple<T1,T2,T3> objects whose components consist of a student's name, mean test score, and number of tests. 它以未排序的顺序显示数组中每个元组的组件, 对数组进行排序, ToString然后调用以按排序顺序显示每个元组。It displays the components of each tuple in the array in unsorted order, sorts the array, and then calls ToString to display each tuple in sorted order. 输出显示数组已按其第一个组件排序。The output shows that the array has been sorted by its first component. 请注意, 该示例不会直接调用Tuple<T1,T2,T3>.IComparable.CompareTo方法。Note that the example does not directly call the Tuple<T1,T2,T3>.IComparable.CompareTo method. 此方法由Sort(Array)方法为数组中的每个元素隐式调用。This method is called implicitly by the Sort(Array) method for each element in the 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)
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)

注解

此成员是显式接口成员的实现。This member is an explicit interface member implementation. 它只能在 Tuple<T1,T2,T3> 实例被强制转换为 IComparable 接口时使用。It can be used only when the Tuple<T1,T2,T3> instance is cast to an IComparable interface.

此方法提供IComparable.CompareTo Tuple<T1,T2,T3>类的实现。This method provides the IComparable.CompareTo implementation for the Tuple<T1,T2,T3> class. 尽管可以直接调用方法, 但它通常由集合排序方法 (如Array.Sort(Array)SortedList.Add) 的默认重载调用, 以对集合的成员进行排序。Although the method can be called directly, it is most commonly called by the default overloads of collection sorting methods, such as Array.Sort(Array) and SortedList.Add, to order the members of a collection.

注意

Tuple<T1,T2,T3>.IComparable.CompareTo方法旨在用于排序操作。The Tuple<T1,T2,T3>.IComparable.CompareTo method is intended for use in sorting operations. 如果比较的主要目的是确定两个对象是否相等, 则不应使用此方法。It should not be used when the primary purpose of a comparison is to determine whether two objects are equal. 若要确定两个对象是否相等, 请Equals调用方法。To determine whether two objects are equal, call the Equals method.

Tuple<T1,T2,T3>.IComparable.CompareTo方法使用默认的对象比较器来比较每个组件。The Tuple<T1,T2,T3>.IComparable.CompareTo method uses the default object comparer to compare each component.

适用于

另请参阅