Share via


Collections génériques dans le .NET Framework

Mise à jour : novembre 2007

Cette rubrique propose une vue d'ensemble des classes de collections génériques et d'autres types génériques dans le .NET Framework.

Collections génériques dans le .NET Framework

La bibliothèque de classes .NET Framework fournit plusieurs classes de collection génériques dans les espaces de noms System.Collections.Generic et System.Collections.ObjectModel. Pour plus d'informations sur ces classes, consultez Types de collections couramment utilisés.

System.Collections.Generic

Un grand nombre de types collection génériques sont des équivalents directs de types non génériques. Dictionary<TKey, TValue> est une version générique de Hashtable ; il utilise la structure générique KeyValuePair<TKey, TValue> pour l'énumération au lieu de DictionaryEntry.

List<T> est une version générique de ArrayList. Il existe des classes Queue<T> et Stack<T> génériques qui correspondent aux versions non génériques.

Il existe des versions génériques et non génériques de SortedList<TKey, TValue>. Dans les deux cas, il s'agit de versions hybrides entre un dictionnaire et une liste. La classe générique SortedDictionary<TKey, TValue> est un dictionnaire pur et n'a aucun équivalent non générique.

La classe générique LinkedList<T> est une véritable liste liée. Elle n'a aucun équivalent non générique.

System.Collections.ObjectModel

La classe générique Collection<T> fournit une classe de base destinée à dériver vos propres types collection génériques. La classe ReadOnlyCollection<T> offre un moyen facile de créer une collection en lecture seule à partir de n'importe quel type implémentant l'interface générique IList<T>. La classe générique KeyedCollection<TKey, TItem> permet de stocker des objets qui contiennent leurs propres clés.

Autres types génériques

La structure générique Nullable<T> permet d'utiliser des types valeur comme s'il était possible de leur assigner null. Cela peut s'avérer utile lors de l'utilisation de requêtes de base de données, dont certains champs contenant des types valeur sont parfois manquants. Le paramètre de type générique peut représenter n'importe quel type valeur.

Remarque :

En C#, il n'est pas nécessaire d'utiliser explicitement Nullable<T> dans la mesure où le langage possède une syntaxe pour les types nullables.

La structure générique ArraySegment<T> permet de délimiter une plage d'éléments dans un tableau unidimensionnel, de base zéro, d'un type quelconque. Le paramètre de type générique est le type des éléments du tableau.

Le délégué générique EventHandler<TEventArgs> rend inutile la déclaration d'un type délégué pour gérer des événements, si votre événement respecte le modèle de gestion des événements utilisé par le .NET Framework. Supposons, par exemple, que vous avez créé une classe MyEventArgs, dérivée de EventArgs, pour stocker les données relatives à votre événement. Vous pouvez déclarer l'événement comme suit :

Public Event MyEvent As EventHandler(Of MyEventArgs)
public event EventHandler<MyEventArgs> MyEvent;
public:
    event EventHandler<MyEventArgs^>^ MyEvent;

Voir aussi

Concepts

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

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

Interfaces génériques

Avantages et limitations des génériques

Référence

System.Collections.Generic

System.Collections.ObjectModel

Autres ressources

Génériques dans le .NET Framework