Tuple<T1>.IComparable.CompareTo(Object) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將目前的 Tuple<T1> 物件與指定的物件進行比較,並且傳回一個整數,指出目前物件在排序順序中,究竟在指定物件的前面、後面還是相同位置。
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> 物件。
範例
下列範例會建立單一值的陣列,其元件為 Double 值。 它會以未排序的順序顯示每個 Tuple 元件的值、排序陣列,然後依排序次序顯示值。 請注意,此範例不會直接呼叫 Tuple<T1>.IComparable.CompareTo 方法。 這個方法是由 Sort(Array) 陣列中每個元素的 方法隱含呼叫。
using System;
class Example
{
static void Main()
{
Tuple<Double>[] values = { Tuple.Create(13.54),
Tuple.Create(Double.NaN),
Tuple.Create(-189.42993),
Tuple.Create(Double.PositiveInfinity),
Tuple.Create(Double.Epsilon),
Tuple.Create(1.934E-17),
Tuple.Create(Double.NegativeInfinity),
Tuple.Create(-0.000000000003588),
null };
Console.WriteLine("The values in unsorted order:");
foreach (var value in values)
if (value != null)
Console.WriteLine(" {0}", value.Item1);
else
Console.WriteLine(" <null>");
Console.WriteLine();
Array.Sort(values);
Console.WriteLine("The values in sorted order:");
foreach (var value in values)
if (value != null)
Console.WriteLine(" {0}", value.Item1);
else
Console.WriteLine(" <null>");
}
}
// The example displays the following output:
// The values in unsorted order:
// 13.54
// NaN
// -189.42993
// Infinity
// 4.94065645841247E-324
// 1.934E-17
// -Infinity
// -3.588E-12
//
// The values in sorted order:
// NaN
// -Infinity
// -189.42993
// -3.588E-12
// 4.94065645841247E-324
// 1.934E-17
// 13.54
// Infinity
open System
let values =
[| Tuple.Create 13.54
Tuple.Create Double.NaN
Tuple.Create -189.42993
Tuple.Create Double.PositiveInfinity
Tuple.Create Double.Epsilon
Tuple.Create 1.934E-17
Tuple.Create Double.NegativeInfinity
Tuple.Create -0.000000000003588
null |]
printfn "The values in unsorted order:"
for value in values do
printfn $" %A{value.Item1}"
printfn ""
Array.Sort values
printfn "The values sorted in descending order:"
for value in values do
printfn $" %A{value.Item1}"
// The example displays the following output:
// The values in unsorted order:
// 13.54
// NaN
// -189.42993
// Infinity
// 4.94065645841247E-324
// 1.934E-17
// -Infinity
// -3.588E-12
//
// The values in sorted order:
// NaN
// -Infinity
// -189.42993
// -3.588E-12
// 4.94065645841247E-324
// 1.934E-17
// 13.54
// Infinity
Module Example
Sub Main()
Dim values() = { Tuple.Create(13.54),
Tuple.Create(Double.NaN),
Tuple.Create(-189.42993),
Tuple.Create(Double.PositiveInfinity),
Tuple.Create(Double.Epsilon),
Tuple.Create(1.934E-17),
Tuple.Create(Double.NegativeInfinity),
Tuple.Create(-0.000000000003588),
Nothing}
Console.WriteLine("The values in unsorted order:")
For Each value In values
If value IsNot Nothing Then
Console.WriteLine(" {0}", value.Item1)
Else
Console.WriteLine(" <null>")
End If
Next
Console.WriteLine()
Array.Sort(values)
Console.WriteLine("The values in sorted order:")
For Each value In values
If value IsNot Nothing Then
Console.WriteLine(" {0}", value.Item1)
Else
Console.WriteLine(" <null>")
End If
Next
End Sub
End Module
' The example displays the following output:
' The values in unsorted order:
' 13.54
' NaN
' -189.42993
' Infinity
' 4.94065645841247E-324
' 1.934E-17
' -Infinity
' -3.588E-12
'
' The values in sorted order:
' NaN
' -Infinity
' -189.42993
' -3.588E-12
' 4.94065645841247E-324
' 1.934E-17
' 13.54
' Infinity
備註
這個成員是明確介面成員實作, 只有在 Tuple<T1> 執行個體轉換成 IComparable 介面時,才能使用這個成員。
這個方法提供 IComparable.CompareTo 類別的實作 Tuple<T1> 。 雖然可以直接呼叫 方法,但最常由集合排序方法的預設多載呼叫,例如 Array.Sort(Array) 和 SortedList.Add ,以排序集合的成員。
警告
方法 Tuple<T1>.IComparable.CompareTo 適用于排序作業。 當比較的主要用途是判斷兩個物件是否相等時,不應該使用它。 若要判斷兩個物件是否相等,請呼叫 Equals 方法。
方法 Tuple<T1>.IComparable.CompareTo 會使用預設物件比較子。