Lire en anglais

Partager via


Tuple<T1,T2>.IStructuralComparable.CompareTo(Object, IComparer) Méthode

Définition

Compare l'objet Tuple<T1,T2> 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 est dans 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>.

Exemples

L’exemple suivant crée un tableau d’objets Tuple<T1,T2> qui se composent du nom d’un étudiant et du score de test. Il affiche le composant de chaque tuple dans le tableau dans l’ordre non trié, trie le tableau, puis appelle 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 ScoreComparer qui implémente l’interface IComparer et trie les Tuple<T1,T2> objets dans l’ordre croissant par la valeur de leur deuxième composant plutôt que par leur premier composant. Notez que l’exemple n’appelle pas directement la IStructuralComparable.CompareTo 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 ScoreComparer<T1, T2> : IComparer
{
   public int Compare(object x, object y)
   {
      Tuple<T1, T2> tX = x as Tuple<T1,T2>;
      if (tX == null)
      { 
         return 0;
      }   
      else
      {
         Tuple<T1, T2> tY = y as Tuple<T1, T2>;
         return Comparer<T2>.Default.Compare(tX.Item2, tY.Item2);             
      }
   }
}

public class Example
{
   public static void Main()
   {
      Tuple<string, Nullable<int>>[] scores = 
                    { new Tuple<string, Nullable<int>>("Jack", 78),
                      new Tuple<string, Nullable<int>>("Abbey", 92), 
                      new Tuple<string, Nullable<int>>("Dave", 88),
                      new Tuple<string, Nullable<int>>("Sam", 91), 
                      new Tuple<string, Nullable<int>>("Ed", null),
                      new Tuple<string, Nullable<int>>("Penelope", 82),
                      new Tuple<string, Nullable<int>>("Linda", 99),
                      new Tuple<string, Nullable<int>>("Judith", 84) };

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

      Console.WriteLine();

      Array.Sort(scores, new ScoreComparer<string, Nullable<int>>());

      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)
//       (Abbey, 92)
//       (Dave, 88)
//       (Sam, 91)
//       (Ed, )
//       (Penelope, 82)
//       (Linda, 99)
//       (Judith, 84)
//       
//       The values in sorted order:
//       (Ed, )
//       (Jack, 78)
//       (Penelope, 82)
//       (Judith, 84)
//       (Dave, 88)
//       (Sam, 91)
//       (Abbey, 92)
//       (Linda, 99)

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

Voir aussi