Partager via


Comparaisons et tris dans les collections

Les classes System.Collections effectuent des comparaisons dans presque tous les processus impliqués dans la gestion des collections, qu'il s'agisse de rechercher l'élément à supprimer ou de retourner la valeur d'une paire clé-valeur.

Deux constructions sont utilisées pour les comparaisons. La méthode Equals, héritée ou dérivée d'Object, retourne simplement un type Boolean pour indiquer si deux objets sont égaux. La méthode IComparable.CompareTo et la méthode IComparer.Compare retournent un entier qui indique comment les deux valeurs se comparent l'une par rapport à l'autre. Equals est utilisé pour les contrôles d'égalité ; les méthodes IComparable.CompareTo et IComparer.Compare et leurs équivalents sur les interfaces génériques, les méthodes IComparer<T>.Compare et IComparable<T>.CompareTo, sont utilisées pour les tris.

Les comparaisons peuvent être établies entre les éléments de la collection, ou entre un élément et une valeur spécifiée. Lorsque des comparateurs ne sont pas spécifiés explicitement, au moins l'un des objets comparés doit implémenter l'interface IComparable et pouvoir se comparer lui-même à l'autre objet.

Certaines classes ont des méthodes qui acceptent une implémentation IComparer en tant que paramètre. Lorsque ces méthodes sont utilisées et que le paramètre IComparer n'est pas une référence Null (Nothing en Visual Basic), les objets comparés ne sont pas tenus d'implémenter IComparable eux-mêmes. Cependant, c'est toujours une bonne pratique que d'implémenter IComparable sur toutes les classes pouvant être utilisées en tant que valeurs dans une collection liste ou en tant que clés dans une collection dictionnaire.

Certaines surcharges de constructeur pour les collections de dictionnaires acceptent une implémentation IComparer, utilisée pour comparer des clés chaque fois que les comparaisons sont obligatoires. Array a des surcharges de sa méthode Sort qui acceptent une implémentation IComparer, utilisée uniquement pour cet appel spécifique à la méthode Sort.

Le paramètre de culture actuel du système peut affecter les comparaisons et les tris dans une collection. Par défaut, les comparaisons et les tris des classes Collections sont dépendantes de la culture. Pour ignorer le paramètre de culture et donc obtenir des résultats cohérents dans les comparaisons et les tris, utilisez InvariantCulture avec des surcharges de membre qui acceptent CultureInfo. Pour plus d'informations, consultez Exécution d'opérations de chaînes indépendantes de la culture dans des collections et Exécution d'opérations de chaînes indépendantes de la culture dans des tableaux.

Voir aussi

Référence

IComparer

IComparer<T>

IComparable

IComparable<T>

Autres ressources

Création et manipulation de collections