Types de collections couramment utilisés

Les types de collection représentent différentes façons de collecter des données, comme des tables de hachage, des files d’attente, des piles, des sacs, des dictionnaires et des listes.

Toutes les collections sont basées sur les interfaces ICollection ou ICollection<T>, directement ou indirectement. IList et IDictionary leurs équivalents génériques dérivent tous de ces deux interfaces.

Dans les collections basées sur IList ou directement sur ICollection, chaque élément contient uniquement une valeur. Ces types sont les suivants :

Dans les collections basées sur l’interface IDictionary, chaque élément contient à la fois une clé et une valeur. Ces types sont les suivants :

La classe KeyedCollection<TKey,TItem> est unique, car il s’agit d’une liste de valeurs avec des clés incorporées dans les valeurs. Par conséquent, elle se comporte à la fois comme une liste et comme un dictionnaire.

Quand un accès efficace à une collection multithread est requis, utilisez les collections génériques de l’espace de noms System.Collections.Concurrent.

Les classes Queue et Queue<T> fournissent des listes FIFO. Les classes Stack et Stack<T> fournissent des listes LIFO.

Typage fort

Les collections génériques conviennent le mieux au typage fort. Par exemple, l’ajout d’un élément d’un type autre qu’un Int32 à une collection List<Int32> provoque une erreur de compilation. Toutefois, si votre langage ne prend pas en charge les génériques, l’espace de noms System.Collections contient des classes de base abstraites pouvant être étendues pour créer des classes de collection fortement typées. Ces classes de base comprennent :

Variation des collections

Les collections varient dans la façon dont elles stockent, trient et comparent les éléments, et dans la façon dont elles effectuent des recherches.

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>.

Toutes les collections utilisent des index de base zéro, sauf Array, qui autorise les tableaux qui ne sont pas en base zéro.

Vous pouvez accéder aux éléments d’un SortedList ou d’un KeyedCollection<TKey,TItem> avec la clé ou l’index de l’élément. Vous ne pouvez accéder qu’aux éléments d’un Hashtable ou d’un Dictionary<TKey,TValue> avec la clé de l’élément.

Utiliser LINQ avec les types de collection

La fonctionnalité LINQ to Objects fournit un modèle courant pour accéder aux objets en mémoire de tout type qui implémente IEnumerable ou IEnumerable<T>. Les requêtes LINQ présentent plusieurs avantages par rapport aux constructions standard, comme les boucles foreach :

  • Elles sont concises et plus faciles à comprendre.
  • Elles peuvent filtrer, classer et regrouper des données.
  • Elles peuvent améliorer les performances.

Pour plus d’informations, consultez LINQ to Objects (C#), LINQ to Objects (Visual Basic) et Parallel LINQ (PLINQ).

Intitulé Description
Collections et structures de données Présente les différents types de collections disponibles dans .NET, y compris les piles, les files d’attente, les listes, les tableaux et les structures.
Types de collections Hashtable et Dictionary Décrit les fonctionnalités des types de dictionnaires basés sur le hachage génériques et non génériques.
Types de collections triées Décrit les classes qui fournissent une fonctionnalité de tri pour les listes et les ensembles.
Génériques Décrit la fonctionnalité des génériques, notamment les collections, les délégués et les interfaces génériques fournis par .NET. Fournit des liens vers de la documentation sur les fonctionnalités pour C#, Visual Basic et Visual C++, ainsi que vers des technologies de prise en charge comme la réflexion.

Informations de référence

System.Collections

System.Collections.Generic

System.Collections.ICollection

System.Collections.Generic.ICollection<T>

System.Collections.IList

System.Collections.Generic.IList<T>

System.Collections.IDictionary

System.Collections.Generic.IDictionary<TKey,TValue>