Lire en anglais

Partager via


Tuple<T1,T2,T3,T4>.IStructuralComparable.CompareTo Méthode

Définition

Compare l'objet Tuple<T1,T2,T3,T4> actif à un objet spécifié à l'aide d'un comparateur spécifié et retourne un entier qui indique si l'objet actif précède, suit ou se trouve à la même position que l'objet spécifié dans l'ordre de tri.

C#
int IStructuralComparable.CompareTo (object other, System.Collections.IComparer comparer);

Paramètres

other
Object

Objet à comparer à l'instance actuelle.

comparer
IComparer

Un objet qui fournit des règles personnalisées pour la comparaison.

Retours

Int32

Entier signé qui indique la position relative de cette instance et de other dans l’ordre de tri, comme indiqué dans le tableau suivant.

Valeur Description
Entier négatif Cette instance précède other.
Zéro Cette instance et other ont la même position dans l'ordre de tri.
Entier positif Cette instance suit other.

Implémente

Exceptions

other n’est pas un objet Tuple<T1,T2,T3,T4>.

Exemples

L’exemple suivant crée un tableau d’objets qui contiennent des données statistiques sur les lanceurs de Tuple<T1,T2,T3,T4> baseball. Les éléments de données incluent le nom du lanceur, le nombre d’innings pitchés, la moyenne de l’exécution acquise par le lanceur (le nombre moyen d’exécutions qu’un lanceur autorise par jeu) et le nombre de frappes que le lanceur a abandonné. L’exemple montre comment afficher le composant de chaque tuple dans le tableau dans un ordre non trié, trier le tableau, puis appeler ToString pour afficher la valeur de chaque tuple dans l’ordre trié. Pour trier le tableau, l’exemple définit une classe générique PitcherComparer qui implémente l’interface IComparer et trie les Tuple<T1,T2,T3,T4> objets dans l’ordre croissant par la valeur de leur troisième composant (moyenne d’exécution acquise) au lieu de leur premier composant. Notez que l’exemple n’appelle pas directement la IStructuralComparable.CompareTo(Object, IComparer) méthode. Cette méthode est appelée implicitement par la Array.Sort(Array, IComparer) méthode de chaque élément du tableau.

C#
using System;
using System.Collections;
using System.Collections.Generic;

public class PitcherComparer<T1, T2, T3, T4> : IComparer
{
   public int Compare(object x, object y)
   {
      Tuple<T1, T2, T3, T4> tX = x as Tuple<T1, T2, T3, T4>;
      if (tX == null)
      { 
         return 0;
      }   
      else
      {
         Tuple<T1, T2, T3, T4> tY = y as Tuple<T1, T2, T3, T4>;
         return Comparer<T3>.Default.Compare(tX.Item3, tY.Item3);             
      }
   }
}

public class Example
{
   public static void Main()
   {
      Tuple<string, double, double, int>[] pitchers = 
                    { Tuple.Create("McHale, Joe", 240.1, 3.60, 221),
                      Tuple.Create("Paul, Dave", 233.1, 3.24, 231), 
                      Tuple.Create("Williams, Mike", 193.2, 4.00, 183),
                      Tuple.Create("Blair, Jack", 168.1, 3.48, 146), 
                      Tuple.Create("Henry, Walt", 140.1, 1.92, 96),
                      Tuple.Create("Lee, Adam", 137.2, 2.94, 109),
                      Tuple.Create("Rohr, Don", 101.0, 3.74, 110) };

      Console.WriteLine("The values in unsorted order:");
      foreach (var pitcher in pitchers)
         Console.WriteLine(pitcher.ToString());

      Console.WriteLine();

      Array.Sort(pitchers, new PitcherComparer<string, double, double, int>());

      Console.WriteLine("The values sorted by earned run average (component 3):");
      foreach (var pitcher in pitchers)
         Console.WriteLine(pitcher.ToString());
   }
}
// The example displays the following output;
//       The values in unsorted order:
//       (McHale, Joe, 240.1, 3.6, 221)
//       (Paul, Dave, 233.1, 3.24, 231)
//       (Williams, Mike, 193.2, 4, 183)
//       (Blair, Jack, 168.1, 3.48, 146)
//       (Henry, Walt, 140.1, 1.92, 96)
//       (Lee, Adam, 137.2, 2.94, 109)
//       (Rohr, Don, 101, 3.74, 110)
//       
//       The values sorted by earned run average (component 3):
//       (Henry, Walt, 140.1, 1.92, 96)
//       (Lee, Adam, 137.2, 2.94, 109)
//       (Rohr, Don, 101, 3.74, 110)
//       (Blair, Jack, 168.1, 3.48, 146)
//       (McHale, Joe, 240.1, 3.6, 221)
//       (Paul, Dave, 233.1, 3.24, 231)
//       (Williams, Mike, 193.2, 4, 183)

Remarques

Ce membre est une implémentation d'un membre d'interface explicite. Il peut uniquement être utilisé lorsque l'instance de Tuple<T1,T2,T3,T4> est castée en interface IStructuralComparable.

Bien que cette méthode puisse être appelée directement, elle est généralement appelée par des méthodes de tri de collection qui incluent des IComparer paramètres pour commander les membres d’une collection. Par exemple, elle est appelée par la méthode et la Array.Sort(Array, IComparer) Add méthode d’un SortedList objet instancié à l’aide du SortedList.SortedList(IComparer) constructeur.

Attention

La IStructuralComparable.CompareTo(Object, IComparer) méthode est destinée à être utilisée dans les opérations de tri. Il ne doit pas être utilisé lorsque l’objectif principal d’une comparaison est de déterminer si deux objets sont égaux. Pour déterminer si deux objets sont égaux, appelez la IStructuralEquatable.Equals(Object, IEqualityComparer) méthode.

S’applique à

Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0