Tuple<T1,T2,T3,T4,T5>.IStructuralComparable.CompareTo Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirtilen bir karşılaştırıcı kullanarak geçerli Tuple<T1,T2,T3,T4,T5> nesneyi belirtilen bir nesneyle karşılaştırır ve geçerli nesnenin sıralama düzeninde belirtilen nesneyle aynı konumda mı, ondan önce mi, sonra mı yoksa aynı konumda mı olduğunu belirten bir tamsayı döndürür.
virtual int System.Collections.IStructuralComparable.CompareTo(System::Object ^ other, System::Collections::IComparer ^ comparer) = System::Collections::IStructuralComparable::CompareTo;
int IStructuralComparable.CompareTo (object other, System.Collections.IComparer comparer);
abstract member System.Collections.IStructuralComparable.CompareTo : obj * System.Collections.IComparer -> int
override this.System.Collections.IStructuralComparable.CompareTo : obj * System.Collections.IComparer -> int
Function CompareTo (other As Object, comparer As IComparer) As Integer Implements IStructuralComparable.CompareTo
Parametreler
- other
- Object
Geçerli örnek ile karşılaştırılacak nesne.
- comparer
- IComparer
Karşılaştırma için özel kurallar sağlayan nesne.
Döndürülenler
Aşağıdaki tabloda gösterildiği gibi, bu örneğin göreli konumunu ve other
sıralama düzeninde gösteren imzalı tamsayı.
Değer | Açıklama |
---|---|
Negatif bir tamsayı | Bu örnek öncesindedir other .
|
Sıfır | Bu örnek ve other sıralama düzeninde aynı konuma sahiptir.
|
Pozitif bir tamsayı | Bu örnek aşağıdaki gibidir other .
|
Uygulamalar
Özel durumlar
other
nesne Tuple<T1,T2,T3,T4,T5> değildir.
Örnekler
Aşağıdaki örnek, Amerikan profesyonel futbolunda Tuple<T1,T2,T3,T4,T5> geriye doğru koşmak için kariyer istatistiksel verileri içeren bir nesne dizisi oluşturur. 5 tanımlama grubundaki bileşenler oyuncunun adından, oynadığı oyunların sayısından, taşıma veya deneme sayısından, kazanılan toplam yarda sayısından ve atılan touchdown'ların sayısından oluşur. Örnek, dizideki her demetin bileşenlerini sıralanmamış düzende görüntüler, diziyi sıralar ve ardından her tanımlama düzenini sıralı düzende görüntülemek için çağrılar ToString gerçekleştirir. Diziyi sıralamak için örnek, arabirimini uygulayan genel bir YardsGained
sınıf tanımlar ve nesneleri ilk bileşenleri yerine dördüncü bileşenlerinin (kazanılan yarda) değerine göre azalan düzende sıralarTuple<T1,T2,T3,T4,T5>.IComparer Örneğin yöntemini doğrudan çağırmadığını IStructuralComparable.CompareTo unutmayın. Bu yöntem, dizideki Array.Sort(Array, IComparer) her öğe için yöntemi tarafından örtük olarak çağrılır.
using System;
using System.Collections;
using System.Collections.Generic;
public class YardsGained<T1, T2, T3, T4, T5> : IComparer
{
public int Compare(object x, object y)
{
Tuple<T1, T2, T3, T4, T5> tX = x as Tuple<T1, T2, T3, T4, T5>;
if (tX == null)
{
return 0;
}
else
{
Tuple<T1, T2, T3, T4, T5> tY = y as Tuple<T1, T2, T3, T4, T5>;
return -1 * Comparer<T4>.Default.Compare(tX.Item4, tY.Item4);
}
}
}
public class Example
{
public static void Main()
{
// Organization of runningBacks 5-tuple:
// Component 1: Player name
// Component 2: Number of games played
// Component 3: Number of attempts (carries)
// Component 4: Number of yards gained
// Component 5: Number of touchdowns
Tuple<string, int, int, int, int>[] runningBacks =
{ Tuple.Create("Payton, Walter", 190, 3838, 16726, 110),
Tuple.Create("Sanders, Barry", 153, 3062, 15269, 99),
Tuple.Create("Brown, Jim", 118, 2359, 12312, 106),
Tuple.Create("Dickerson, Eric", 144, 2996, 13259, 90),
Tuple.Create("Faulk, Marshall", 176, 2836, 12279, 100) };
// Display the array in unsorted order.
Console.WriteLine("The values in unsorted order:");
foreach (var runningBack in runningBacks)
Console.WriteLine(runningBack.ToString());
Console.WriteLine();
// Sort the array
Array.Sort(runningBacks, new YardsGained<string, int, int, int, int>());
// Display the array in sorted order.
Console.WriteLine("The values in sorted order:");
foreach (var runningBack in runningBacks)
Console.WriteLine(runningBack.ToString());
}
}
// The example displays the following output:
// The values in unsorted order:
// (Payton, Walter, 190, 3838, 16726, 110)
// (Sanders, Barry, 153, 3062, 15269, 99)
// (Brown, Jim, 118, 2359, 12312, 106)
// (Dickerson, Eric, 144, 2996, 13259, 90)
// (Faulk, Marshall, 176, 2836, 12279, 100)
//
// The values in sorted order:
// (Brown, Jim, 118, 2359, 12312, 106)
// (Dickerson, Eric, 144, 2996, 13259, 90)
// (Faulk, Marshall, 176, 2836, 12279, 100)
// (Payton, Walter, 190, 3838, 16726, 110)
// (Sanders, Barry, 153, 3062, 15269, 99)
open System
open System.Collections
open System.Collections.Generic
type YardsGained<'T1, 'T2, 'T3, 'T4, 'T5>() =
interface IComparer with
member _.Compare(x, y) =
match x with
| :? Tuple<'T1, 'T2, 'T3, 'T4, 'T5> as tX ->
let tY = y :?> Tuple<'T1, 'T2, 'T3, 'T4, 'T5>
-1 * Comparer<'T4>.Default.Compare(tX.Item4, tY.Item4)
| _ -> 0
// Organization of runningBacks 5-tuple:
// Component 1: Player name
// Component 2: Number of games played
// Component 3: Number of attempts (carries)
// Component 4: Number of yards gained
// Component 5: Number of touchdowns
let runningBacks =
[| Tuple.Create("Payton, Walter", 190, 3838, 16726, 110)
Tuple.Create("Sanders, Barry", 153, 3062, 15269, 99)
Tuple.Create("Brown, Jim", 118, 2359, 12312, 106)
Tuple.Create("Dickerson, Eric", 144, 2996, 13259, 90)
Tuple.Create("Faulk, Marshall", 176, 2836, 12279, 100) |]
// Display the array in unsorted order.
printfn "The values in unsorted order:"
for runningBack in runningBacks do
printfn $"{runningBack}"
printfn ""
// Sort the array
Array.Sort(runningBacks, YardsGained<string, int, int, int, int>())
// Display the array in sorted order.
printfn "The values in sorted order:"
for runningBack in runningBacks do
printfn $"{runningBack}"
// The example displays the following output:
// The values in unsorted order:
// (Payton, Walter, 190, 3838, 16726, 110)
// (Sanders, Barry, 153, 3062, 15269, 99)
// (Brown, Jim, 118, 2359, 12312, 106)
// (Dickerson, Eric, 144, 2996, 13259, 90)
// (Faulk, Marshall, 176, 2836, 12279, 100)
//
// The values in sorted order:
// (Brown, Jim, 118, 2359, 12312, 106)
// (Dickerson, Eric, 144, 2996, 13259, 90)
// (Faulk, Marshall, 176, 2836, 12279, 100)
// (Payton, Walter, 190, 3838, 16726, 110)
// (Sanders, Barry, 153, 3062, 15269, 99)
Imports System.Collections
Imports System.Collections.Generic
Public Class YardsGained(Of T1, T2, T3, T4, T5) : Implements IComparer
Public Function Compare(x As Object, y As Object) As Integer _
Implements IComparer.Compare
Dim tX As Tuple(Of T1, T2, T3, T4, T5) = TryCast(x, Tuple(Of T1, T2, T3, T4, T5))
If tX Is Nothing Then
Return 0
Else
Dim tY As Tuple(Of T1, T2, T3, T4, T5) = DirectCast(y, Tuple(Of T1, T2, T3, T4, T5))
Return -1 * Comparer(Of T4).Default.Compare(tx.Item4, tY.Item4)
End If
End Function
End Class
Module Example
Public Sub Main()
' Organization of runningBacks 5-tuple:
' Component 1: Player name
' Component 2: Number of games played
' Component 3: Number of attempts (carries)
' Component 4: Number of yards gained
' Component 5: Number of touchdowns
Dim runningBacks() =
{ Tuple.Create("Payton, Walter", 190, 3838, 16726, 110),
Tuple.Create("Sanders, Barry", 153, 3062, 15269, 99),
Tuple.Create("Brown, Jim", 118, 2359, 12312, 106),
Tuple.Create("Dickerson, Eric", 144, 2996, 13259, 90),
Tuple.Create("Faulk, Marshall", 176, 2836, 12279, 100) }
' Display the array in unsorted order.
Console.WriteLine("The values in unsorted order:")
For Each runningBack In runningBacks
Console.WriteLine(runningBack.ToString())
Next
Console.WriteLine()
' Sort the array
Array.Sort(runningBacks, New YardsGained(Of String, Integer, Integer, Integer, Integer)())
' Display the array in sorted order.
Console.WriteLine("The values in sorted order:")
For Each runningBack In runningBacks
Console.WriteLine(runningBack.ToString())
Next
End Sub
End Module
' The example displays the following output:
' The values in unsorted order:
' (Payton, Walter, 190, 3838, 16726, 110)
' (Sanders, Barry, 153, 3062, 15269, 99)
' (Brown, Jim, 118, 2359, 12312, 106)
' (Dickerson, Eric, 144, 2996, 13259, 90)
' (Faulk, Marshall, 176, 2836, 12279, 100)
'
' The values in sorted order:
' (Payton, Walter, 190, 3838, 16726, 110)
' (Sanders, Barry, 153, 3062, 15269, 99)
' (Dickerson, Eric, 144, 2996, 13259, 90)
' (Brown, Jim, 118, 2359, 12312, 106)
' (Faulk, Marshall, 176, 2836, 12279, 100)
Açıklamalar
Bu üye, açık bir arabirim üyesi uygulamasıdır. Yalnızca örnek bir IStructuralComparable arabirime Tuple<T1,T2,T3,T4,T5> yayınlandığında kullanılabilir.
Bu yöntem doğrudan çağrılsa da, genellikle bir koleksiyonun üyelerini sıralamaya yönelik parametreleri içeren IComparer koleksiyon sıralama yöntemleri tarafından çağrılır. Örneğin, oluşturucu kullanılarak SortedList.SortedList(IComparer) örneği oluşturan bir SortedList nesnenin yöntemi ve Add yöntemi tarafından Array.Sort(Array, IComparer) çağrılır.
Dikkat
IStructuralComparable.CompareTo yöntemi, sıralama işlemlerinde kullanılmak üzere tasarlanmıştır. Karşılaştırmanın asıl amacı iki nesnenin eşit olup olmadığını belirlemek olduğunda kullanılmamalıdır. İki nesnenin eşit olup olmadığını belirlemek için yöntemini çağırın IStructuralEquatable.Equals(Object, IEqualityComparer) .