Interfaces génériques dans .NET

Cet article donne une vue d'ensemble des interfaces génériques /NET qui fournissent des fonctionnalités communes à plusieurs familles de types génériques.

Les interfaces génériques fournissent des contreparties de type sécurisé aux interfaces non génériques pour les comparaisons de classement et d’égalité, et pour les fonctionnalités partagées par les types de collections génériques. .NET 7 introduit des interfaces génériques pour les types de type nombre, par exemple System.Numerics.INumber<TSelf>. Ces interfaces vous permettent de définir des méthodes génériques qui fournissent des fonctionnalités mathématiques, où le paramètre de type générique est contraint d’être un type qui implémente une interface générique et numérique.

Notes

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’affectation et l’utilisation des types qui implémentent ces interfaces. Pour plus d’informations, consultez Covariance et contravariance.

Comparaisons d’égalité et de classement

Fonctionnalités des collections

  • L'interface générique ICollection<T> est l'interface de base pour les types de collections génériques. Elle offre des fonctionnalités de base pour l'ajout, la suppression, la copie et l'énumération d'éléments. ICollection<T> hérite à la fois de l'interface générique IEnumerable<T> et de l'interface non générique IEnumerable.

  • L'interface générique IList<T> étend l'interface générique ICollection<T> avec des méthodes pour la 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 pour la récupération indexée. Les types de dictionnaires génériques de la bibliothèque de classes de base du .NET implémentent également l’interface IDictionary non générique.

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

Fonctionnalités mathématiques

.NET 7 introduit des interfaces génériques dans l’espace de noms System.Numerics qui décrivent les types de type numéro et les fonctionnalités disponibles. Les 20 types numériques que la bibliothèque de classes de base .NET fournit, par exemple Int32 et Double, ont été mis à jour pour implémenter ces interfaces. La plus importante de ces interfaces est INumber<TSelf>, ce qui correspond approximativement à un nombre « réel ».

Pour plus d’informations sur ces interfaces, consultez les Mathématiques génériques.

Voir aussi