Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

IComparable interface

 

Date de publication : novembre 2016

Définit une méthode de comparaison généralisée spécifique au type qu'un type valeur ou une classe implémente pour ordonnancer ou trier ses instances.

Espace de noms:   System
Assembly:  mscorlib (dans mscorlib.dll)

[ComVisibleAttribute(true)]
public interface IComparable

NomDescription
System_CAPS_pubmethodCompareTo(Object)

Compare l'instance actuelle avec un autre objet du même type et retourne un entier qui indique si l'instance actuelle précède ou suit un autre objet ou se trouve à la même position dans l'ordre de tri.

Cette interface est implémentée par les types dont les valeurs peuvent être ordonnées ou triées. Types de l’implémentation définissent une méthode unique, CompareTo(Object), qui indique si la position de l’instance actuelle dans l’ordre de tri : avant, après ou le même qu’un deuxième objet du même type. L’instance IComparable implémentation est appelée automatiquement par les méthodes telles que Array.Sort et ArrayList.Sort.

L’implémentation de la CompareTo(Object) méthode doit retourner un Int32 qui a l’une des trois valeurs, comme indiqué dans le tableau suivant.

Valeur

Signification

Inférieure à zéro

L’instance actuelle précède l’objet spécifié par le CompareTo méthode dans l’ordre de tri.

Zéro

L’instance actuelle se produit dans la même position dans l’ordre de tri que l’objet spécifié par le CompareTo (méthode).

Supérieure à zéro

Cette instance suit l’objet spécifié par le CompareTo méthode dans l’ordre de tri.

Tous les types numériques (telles que Int32 et Double) implémenter IComparable, comme String, Char, et DateTime. Types personnalisés doivent également fournir leur propre implémentation de IComparable pour permettre aux instances d’objet d’être ordonnées ou triées.

L’exemple suivant illustre l’implémentation de IComparable et les conditions préalables CompareTo (méthode).

using System;
using System.Collections;

public class Temperature : IComparable 
{
    // The temperature value
    protected double temperatureF;

    public int CompareTo(object obj) {
        if (obj == null) return 1;

        Temperature otherTemperature = obj as Temperature;
        if (otherTemperature != null) 
            return this.temperatureF.CompareTo(otherTemperature.temperatureF);
        else
           throw new ArgumentException("Object is not a Temperature");
    }

    public double Fahrenheit 
    {
        get 
        {
            return this.temperatureF;
        }
        set {
            this.temperatureF = value;
        }
    }

    public double Celsius 
    {
        get 
        {
            return (this.temperatureF - 32) * (5.0/9);
        }
        set 
        {
            this.temperatureF = (value * 9.0/5) + 32;
        }
    }
}

public class CompareTemperatures
{
   public static void Main()
   {
      ArrayList temperatures = new ArrayList();
      // Initialize random number generator.
      Random rnd = new Random();

      // Generate 10 temperatures between 0 and 100 randomly.
      for (int ctr = 1; ctr <= 10; ctr++)
      {
         int degrees = rnd.Next(0, 100);
         Temperature temp = new Temperature();
         temp.Fahrenheit = degrees;
         temperatures.Add(temp);   
      }

      // Sort ArrayList.
      temperatures.Sort();

      foreach (Temperature temp in temperatures)
         Console.WriteLine(temp.Fahrenheit);

   }
}
// The example displays the following output to the console (individual
// values may vary because they are randomly generated):
//       2
//       7
//       16
//       17
//       31
//       37
//       58
//       66
//       72
//       95

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 1.1
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher: