# Tuple<T1,T2,T3,T4,T5>.IStructuralComparable.CompareTo(Object, IComparer)Tuple<T1,T2,T3,T4,T5>.IStructuralComparable.CompareTo(Object, IComparer)Tuple<T1,T2,T3,T4,T5>.IStructuralComparable.CompareTo(Object, IComparer) Method

## 定義

`` 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);``
``Function CompareTo (other As Object, comparer As IComparer) As Integer Implements IStructuralComparable.CompareTo``

#### パラメーター

other
Object Object Object

comparer
IComparer IComparer IComparer

#### 戻り値

[値]Value 説明Description

0Zero このインスタンスと `other` の位置は、並べ替え順序において同じです。This instance and `other` have the same position in the sort order.

#### 例外

`other`Tuple<T1,T2,T3,T4,T5> オブジェクトではありません。`other` is not a Tuple<T1,T2,T3,T4,T5> object.

## 例

``````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)
``````
``````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)
``````

## 注釈

このメンバーは、明示的なインターフェイス メンバーの実装です。This member is an explicit interface member implementation. これは、Tuple<T1,T2,T3,T4,T5> のインスタンスが IStructuralComparable インターフェイスにキャストされる場合のみ、使用できます。It can be used only when the Tuple<T1,T2,T3,T4,T5> instance is cast to an IStructuralComparable interface.

コレクションを並べ替えることで最もよく呼び出されますが、このメソッドの直接呼び出し、メソッドが含まれるIComparerパラメーター コレクションのメンバーの順序付けをします。Although this method can be called directly, it is most commonly called by collection-sorting methods that include IComparer parameters to order the members of a collection. によって呼び出されますなど、Array.Sort(Array, IComparer)メソッドとAddのメソッド、SortedListを使用してインスタンス化されるオブジェクト、SortedList.SortedList(IComparer)コンス トラクター。For example, it is called by the Array.Sort(Array, IComparer) method and the Add method of a SortedList object that is instantiated by using the SortedList.SortedList(IComparer) constructor.

IStructuralComparable.CompareTo並べ替え操作で使用するためのメソッドです。The IStructuralComparable.CompareTo method is intended for use in sorting operations. また、比較の主な目的は、2 つのオブジェクトが等しいかどうかを判断するときにない使用する必要があります。It should not be used when the primary purpose of a comparison is to determine whether two objects are equal. 2 つのオブジェクトが等しいかどうかを確認するのには、呼び出し、IStructuralEquatable.Equals(Object, IEqualityComparer)メソッド。To determine whether two objects are equal, call the IStructuralEquatable.Equals(Object, IEqualityComparer) method.