Partager via


Types de collections couramment utilisés

Mise à jour : novembre 2007

Les types de collection sont les variations communes des collections de données, telles que les tables de hachage, les files d'attente, les piles, les dictionnaires et les listes.

Les collections prennent comme base l'interface ICollection, l'interface IList, l'interface IDictionary ou leurs équivalents génériques. L'interface IList et l'interface IDictionary sont toutes deux dérivées de l'interface ICollection ; par conséquent, toutes les collections s'appuient sur l'interface ICollection (directement ou indirectement). Dans les collections qui s'appuient sur l'interface IList (comme par exemple Array, ArrayList ou List<T>) ou directement sur l'interface ICollection (comme par exemple Queue, Stack ou LinkedList<T>), chaque élément contient une valeur uniquement. Dans les collections reposant sur l'interface IDictionary (telles que les classes Hashtable et SortedList, ou les classes génériques Dictionary<TKey, TValue> et SortedList<TKey, TValue>), chaque élément contient à la fois une clé et une valeur. La classe KeyedCollection<TKey, TItem> est unique parce qu'il s'agit d'une liste de valeurs avec clés incorporées dans les valeurs ; par conséquent, elle se comporte comme une liste et comme un dictionnaire.

Les collections génériques représentent la meilleure solution pour les classes fortement typées. Toutefois, si votre langage ne prend pas en charge les classes génériques, l'espace de noms System.Collections contient des collections de base, telles que CollectionBase, ReadOnlyCollectionBase et DictionaryBase, qui représentent des classes de base abstraites pouvant être étendues dans le but de créer des classes de collection fortement typées.

Les collections peuvent varier selon le mode de stockage des éléments, leur mode de tri, la manière dont les recherches sont effectuées et la façon dont les comparaisons sont établies. La classe Queue et la classe générique Queue<T> fournissent des listes de type premier entré premier sorti, alors que la classe Stack et la classe générique Stack<T> fournissent des listes de type dernier entré premier sorti. La classe SortedList et la classe générique SortedList<TKey, TValue> fournissent des versions triées de la classe Hashtable et de la classe générique Dictionary<TKey, TValue>. Dans Hashtable ou Dictionary<TKey, TValue>, les éléments sont accessibles uniquement par la clé de l'élément, alors que dans SortedList ou KeyedCollection<TKey, TItem>, les éléments sont accessibles par la clé ou par l'index de l'élément. Dans toutes les collections, les index sont des index de base zéro, sauf Array qui autorise des tableaux qui ne sont pas de base zéro.

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.

Dans cette section

Référence

Rubriques connexes

  • Collections et structures de données
    Présente les différents types de collection disponibles dans le .NET Framework, notamment les piles, les files d'attente, les listes, les tableaux et les structures.

  • Génériques dans le .NET Framework
    Décrit la fonctionnalité des génériques, et notamment les collections, les délégués et les interfaces génériques fournis par le .NET Framework. Fournit des liens vers la documentation relative aux fonctionnalités de C#, Visual Basic et Visual C++, et aux technologies de prise en charge, telles que la réflexion.