IComparable, interface générique
Assembly : mscorlib (dans mscorlib.dll)
Cette interface est implémentée par des types dont les valeurs peuvent être triées ; par exemple, les classes numeric et string. Un type valeur ou une classe implémente la méthode CompareTo pour créer une méthode de comparaison spécifique au type et appropriée au tri par exemple.
Remarque : |
|---|
| L'interface IComparable définit la méthode CompareTo, qui détermine l'ordre de tri des instances du type d'implémentation. L'interface IEquatable définit la méthode Equals, qui détermine l'égalité des instances du type d'implémentation. |
L'exemple de code suivant illustre l'implémentation de IComparable pour un objet Temperature simple. L'exemple crée une collection SortedList de chaînes avec les clés d'objet Temperature et ajoute plusieurs paires de températures et de chaînes hors séquence. La collection SortedList utilise l'implémentation de IComparable pour trier les entrées de liste, qui sont alors affichées par ordre de température croissante.
using System; using System.Collections.Generic; public class Temperature : IComparable<Temperature> { // Implement the CompareTo method. For the parameter type, Use // the type specified for the type parameter of the generic // IComparable interface. // public int CompareTo(Temperature other) { // The temperature comparison depends on the comparison of the // the underlying Double values. Because the CompareTo method is // strongly typed, it is not necessary to test for the correct // object type. return m_value.CompareTo(other.m_value); } // The underlying temperature value. protected double m_value = 0.0; public double Celsius { get { return m_value - 273.15; } } public double Kelvin { get { return m_value; } set { if (value < 0.0) { throw new ArgumentException("Temperature cannot be less than absolute zero."); } else { m_value = value; } } } public Temperature(double degreesKelvin) { this.Kelvin = degreesKelvin; } } public class Example { public static void Main() { SortedList<Temperature, string> temps = new SortedList<Temperature, string>(); // Add entries to the sorted list, out of order. temps.Add(new Temperature(2017.15), "Boiling point of Lead"); temps.Add(new Temperature(0), "Absolute zero"); temps.Add(new Temperature(273.15), "Freezing point of water"); temps.Add(new Temperature(5100.15), "Boiling point of Carbon"); temps.Add(new Temperature(373.15), "Boiling point of water"); temps.Add(new Temperature(600.65), "Melting point of Lead"); foreach( KeyValuePair<Temperature, string> kvp in temps ) { Console.WriteLine("{0} is {1} degrees Celsius.", kvp.Value, kvp.Key.Celsius); } } } /* This code example produces the following output: Absolute zero is -273.15 degrees Celsius. Freezing point of water is 0 degrees Celsius. Boiling point of water is 100 degrees Celsius. Melting point of Lead is 327.5 degrees Celsius. Boiling point of Lead is 1744 degrees Celsius. Boiling point of Carbon is 4827 degrees Celsius. */
Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Microsoft .NET Framework 3.0 est pris en charge sur Windows Vista, Microsoft Windows XP SP2 et Windows Server 2003 SP1.
Remarque :