Partager via


Interfaces génériques

Cette rubrique présente les interfaces génériques offrant des fonctionnalités communes à toutes les familles de types génériques.

Interfaces génériques

Les interfaces génériques fournissent des équivalents de type sécurisé aux interfaces non génériques pour les comparaisons de classement et d'égalité de même que pour les fonctionnalités partagées par les types collection génériques.

RemarqueRemarque

À partir du .NET Framework version 4, les paramètres de type de plusieurs interfaces génériques sont marqués comme étant covariants ou contravariants, en fournissant une plus grande flexibilité pour l'assignation et l'utilisation des types qui implémentent ces interfaces.Consultez Covariance et contravariance dans les génériques.

Comparaisons d'égalité et de classement

Dans l'espace de noms System, les interfaces génériques System.IComparable<T> et System.IEquatable<T>, à l'instar de leurs équivalents non génériques, définissent des méthodes pour effectuer respectivement des comparaisons de classement et d'égalité. Les types implémentent ces interfaces pour permettre d'effectuer de telles comparaisons.

Dans l'espace de noms System.Collections.Generic, les interfaces génériques IComparer<T> et IEqualityComparer<T> offrent la possibilité de définir une comparaison de classement ou d'égalité pour les types qui n'implémentent pas l'interface générique System.IComparable<T> ou System.IEquatable<T> et permettent de redéfinir ces relations pour les types qui les implémentent. Ces interfaces sont utilisées par des méthodes et des constructeurs de nombreuses classes de collection génériques. Par exemple, vous pouvez passer un objet générique IComparer<T> au constructeur de la classe SortedDictionary<TKey, TValue> afin de spécifier un ordre de tri pour un type qui n'implémente pas l'interface System.IComparable<T> générique. Il existe des surcharges de la méthode statique générique Array.Sort et de la méthode d'instance List<T>.Sort pour trier des tableaux et des listes à l'aide d'implémentations de IComparer<T> génériques.

Les classes génériques Comparer<T> et EqualityComparer<T> fournissent des classes de base pour les implémentations des interfaces génériques IComparer<T> et IEqualityComparer<T>. Elles fournissent des comparaisons de classement et d'égalité par défaut par l'intermédiaire de leurs propriétés Comparer<T>.Default et EqualityComparer<T>.Default respectives.

Fonctionnalités d'une collection

L'interface générique ICollection<T> est l'interface de base pour les types collection génériques. Elle fournit des fonctionnalités de base pour ajouter, supprimer, copier et énumérer des éléments. ICollection<T> hérite à la fois d'un IEnumerable<T> générique et d'un IEnumerable non générique.

L'interface générique IList<T> étend l'interface générique ICollection<T> avec des méthodes de récupération indexée.

L'interface générique IDictionary<TKey, TValue> étend l'interface générique ICollection<T> avec des méthodes de récupération de clés. Les types du dictionnaire générique dans la bibliothèque de classes de base du .NET Framework implémentent également l'interface IDictionary non générique.

L'interface générique IEnumerable<T> fournit une structure d'énumérateurs génériques. L'interface générique IEnumerator<T> implémentée par les énumérateurs génériques hérite de l'interface IEnumerator non générique ; les membres MoveNext et Reset qui ne dépendent pas du paramètre de type T apparaissent uniquement sur l'interface non générique. Cela signifie que tout consommateur de l'interface non générique peut également utiliser l'interface générique.

Voir aussi

Référence

System.Collections.Generic

System.Collections.ObjectModel

Concepts

Génériques dans le .NET Framework

Collections génériques dans le .NET Framework

Délégués génériques pour la manipulation de tableaux et de listes

Avantages et limitations des génériques

Covariance et contravariance dans les génériques