Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. |
Traduction
Source
|
IComparable, interface
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 créer ou trier ses instances.
Assembly : mscorlib (dans mscorlib.dll)
Le type IComparable expose les membres suivants.
L'interface est implémentée par les types dont les valeurs peuvent être ordonnées ou triées. Les types de l'implémentation définissent une méthode unique, CompareTo(Object), indiquant la position de l'instance actuelle dans l'ordre de tri : avant, après ou au même niveau qu'un deuxième objet du même type. L'implémentation IComparable de l'instance est appelée automatiquement par les méthodes telles que Array.Sort et ArrayList.Sort.
L'implémentation de la méthode CompareTo(Object) doit retourner un Int32 qui prend une valeur parmi trois, comme indiqué dans le tableau suivant.
|
Valeur |
Signification |
|---|---|
|
Inférieure à zéro |
L'instance actuelle précède l'objet spécifié par la méthode CompareTo dans l'ordre de tri. |
|
Zéro |
Cette instance actuelle se produit dans la même position dans l'ordre de tri que l'objet spécifié par la méthode CompareTo. |
|
Supérieure à zéro |
Cette instance actuelle suit l'objet spécifié par la méthode CompareTo dans l'ordre de tri. |
Tous les types numériques (tels que Int32 et Double) implémentent IComparable, au même titre que String, Char et DateTime. Les 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 de la méthode CompareTo requise :
using System; using System.Collections; public class Temperature : IComparable { // The temperature value protected double temperatureF; public int CompareTo(object obj) { 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
Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2
Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.