Partager via


Quand utiliser les collections génériques

Mise à jour : novembre 2007

Il est généralement recommandé d'utiliser des collections génériques dans la mesure où vous pouvez bénéficier directement de la sécurité de type sans devoir dériver d'un type collection de base et implémenter des membres spécifiques au type. Les performances des types collection génériques sont souvent supérieures à celles des types collection non génériques correspondants (et à celles des types dérivés de types collection de base non génériques) lorsque les éléments de la collection sont des types valeur. En effet, les conversions boxing des éléments sont inutiles avec les génériques.

Les types génériques suivants correspondent à des types collection existants :

Types supplémentaires

Plusieurs types collection génériques n'ont pas d'équivalents non génériques :

LINQ to Objects

La fonctionnalité LINQ to Objects permet d'utiliser des requêtes LINQ pour accéder aux objets en mémoire tant que le type d'objet implémente IEnumerable ou IEnumerable<T>. Les requêtes LINQ fournissent un modèle commun pour accéder aux données, sont généralement plus concises et lisibles que les boucles foreach standard et intègrent des fonctions de filtrage, de classement et de regroupement. Les requêtes LINQ peuvent également améliorer les performances. Pour plus d'informations, consultez LINQ to Objects.

Fonctionnalités supplémentaires

Certains types génériques possèdent des fonctionnalités dont les types collection non génériques sont dépourvus. Par exemple, la classe List<T>, qui correspond à la classe ArrayList non générique, possède plusieurs méthodes acceptant des délégués génériques, notamment le délégué Predicate<T> qui vous permet de spécifier des méthodes pour effectuer des recherches dans la liste, le délégué Action<T> qui représente des méthodes agissant sur chaque élément de la liste et le délégué Converter<TInput, TOutput> qui vous permet de définir des conversions entre types.

La classe List<T> vous permet de spécifier vos propres implémentations de l'interface générique IComparer<T> pour trier et effectuer une recherche dans la liste. Les classes SortedDictionary<TKey, TValue> et SortedList<TKey, TValue> offrent également cette fonctionnalité et permettent, en outre, de spécifier des comparateurs lors de la création de la collection. De la même façon, les classes Dictionary<TKey, TValue> et KeyedCollection<TKey, TItem> vous permettent de spécifier vos propres comparateurs d'égalité.

Voir aussi

Concepts

Vue d'ensemble des génériques dans le .NET Framework

Autres ressources

Types de collections couramment utilisés