Share via


Sélection d'une classe de collection

Veillez à choisir votre classe System.Collections avec beaucoup de soin. Le choix d'une collection erronée peut limiter l'usage que vous pouvez en faire.

Réfléchissez aux questions suivantes :

  • Avez-vous besoin d'une liste séquentielle dans laquelle l'élément est généralement abandonné une fois sa valeur récupérée ?

    • Si oui, vous devez envisager d'utiliser la classe Queue ou la classe générique Queue si vous avez besoin d'un comportement de premier entré premier sorti (FIFO). Vous devez envisager d'utiliser la classe Stack ou la classe générique Stack si vous avez besoin d'un comportement de dernier entré premier sorti (LIFO).

    • Sinon, vous devez envisager d'utiliser les autres collections.

  • Devez-vous accéder aux éléments dans un ordre précis, tel que FIFO, LIFO ou dans un ordre aléatoire ?

    • La classe Queue et la classe générique Queue proposent un accès FIFO.

    • La classe Stack et la classe générique Stack proposent un accès LIFO.

    • La classe générique LinkedList autorise un accès séquentiel à partir du début ou de la fin.

    • Les autres collections offrent un accès aléatoire.

  • Avez-vous besoin d'accéder à chaque élément par son index ?

  • Chaque élément contiendra-t-il une seule valeur, une combinaison d'une clé et d'une valeur ou une combinaison d'une clé et de plusieurs valeurs ?

    • Une valeur : utilisez l'une des collections basée sur l'interface IList ou l'interface générique IList.

    • Une clé et une valeur : utilisez l'une des collections basée sur l'interface IDictionary ou l'interface générique IDictionary.

    • Une valeur avec clé incorporée : utilisez la classe générique KeyedCollection.

    • Une clé et plusieurs valeurs : utilisez la classe NameValueCollection.

  • Avez-vous besoin de trier les éléments dans un ordre différent de celui dans lequel ils ont été entrés ?

    • La classe Hashtable trie ses éléments par leurs codes de hachage.

    • La classe SortedList et les classes génériques SortedDictionary et SortedList trient leurs éléments par la clé, selon les implémentations de l'interface IComparer et de l'interface générique IComparer.

    • ArrayList fournit une méthode Sort qui prend une implémentation IComparer comme paramètre. Son équivalent générique, la classe générique List, fournit une méthode Sort qui prend une implémentation de l'interface générique IComparer comme paramètre.

  • Avez-vous besoin d'opérations de recherche et de récupération d'informations rapides ?

    • ListDictionary est plus rapide que Hashtable pour les petites collections (10 éléments ou moins). La classe générique SortedDictionary fournit une capacité de recherche plus rapide que la classe générique Dictionary.
  • Avez besoin de collections qui acceptent uniquement des chaînes ?

    • StringCollection (sur la base de IList) et StringDictionary (sur la base de IDictionary) figurent dans l'espace de noms System.Collections.Specialized.

    • En outre, vous pouvez utiliser l'une des classes de collections génériques dans l'espace de noms System.Collections.Generic comme collection de chaînes fortement typée en spécifiant la classe String de leurs arguments de type générique.

Voir aussi

Référence

System.Collections
System.Collections.Specialized
System.Collections.Generic

Autres ressources

Création et manipulation de collections