Tutoriel sur les collections C# avec exemples
⚡ Résumé intelligent
En C#, les collections offrent une méthode flexible pour stocker et gérer des groupes d'objets. Contrairement aux tableaux, les collections s'agrandissent et se réduisent à l'exécution, et les espaces de noms System.Collections et System.Collections.Generic fournissent des types prédéfinis pour les listes, les dictionnaires, les piles et les files d'attente.
Dans notre didacticiel précédent, nous avons appris comment utiliser les tableaux en C#. Voyons-en un rapide aperçu, les tableaux en programmation sont utilisés pour regrouper un ensemble d'objets liés. Ainsi, on pourrait créer un tableau ou un ensemble d’entiers, accessible via un nom de variable.
Qu’est-ce que les collections en C# ?
Les collections sont similaires à Arrays, il offre une manière plus flexible de travailler avec un groupe d'objets.
Dans les tableaux, vous aurez remarqué qu’il faut au préalable définir le nombre d’éléments dans un tableau. Cela devait être fait lorsque le tableau était déclaré.
Mais dans une collection, vous n’avez pas besoin de définir au préalable la taille de la collection. Vous pouvez ajouter des éléments ou même supprimer des éléments de la collection à tout moment. Ce chapitre se concentrera sur la façon dont nous pouvons travailler avec les différentes collections disponibles en C#.
Classes System.Collections
Le framework .NET regroupe les classes de collections non génériques d'origine dans l'espace de noms System.Collections. Le tableau ci-dessous récapitule les principaux types utilisables immédiatement.
| Collection | Description |
| ArrayList | La collection ArrayList est similaire aux Arrays type de données en C#. La plus grande différence réside dans la nature dynamique de la collection de listes de tableaux. |
| Stack | La pile est un cas particulier de collection qui représente un concept de type dernier entré, premier sorti (LIFO). |
| Queues | La file d'attente est un cas particulier qui représente le concept du premier entré, premier sorti. |
| Table de hachage | Une table de hachage est une collection spéciale utilisée pour stocker des éléments de type clé-valeur. |
| Liste triée | SortedList est une collection qui stocke par défaut les paires clé-valeur dans l'ordre croissant de clé. |
| BitArray | Un tableau de bits est un tableau de structures de données qui stocke des bits. |
Collections génériques en C#
Les classes non génériques ci-dessus stockent chaque élément comme un objet générique, ce qui empêche le compilateur de vérifier le type et engendre un léger surcoût lié à l'encapsulation des valeurs. Pour pallier ce problème, C# a introduit l'espace de noms System.Collections.Generic, où chaque collection est liée à un type déclaré.
Une collection générique telle que Liste Elle n'accepte que des chaînes de caractères, ce qui permet de détecter les erreurs à la compilation et d'éviter les conversions de type lors de la lecture d'un élément. Les collections génériques sont ainsi plus sûres, plus rapides et plus lisibles, et c'est pourquoi elles sont privilégiées par défaut dans le code C# moderne.
Les collections génériques les plus courantes sont énumérées ci-dessous :
- Liste : Une liste redimensionnable et indexée, le remplacement générique d'ArrayList.
- Dictionnaire : Stocke les paires clé-valeur avec des recherches rapides basées sur le hachage.
- Ensemble de hachage : Ne contient que des valeurs uniques et prend en charge les opérations ensemblistes telles que l'union.
- File d'attente : Une collection premier entré, premier sorti, la version générique de Queue.
- Empiler : Une collection « dernier entré, premier sorti », la version générique de Stack.
- Liste triée : Conserve les paires clé-valeur triées par clé dans l'ordre croissant.
Exemple de collection de listes en C#
La classe List est la collection générique la plus utilisée car elle se comporte comme un tableau dynamique. L'exemple ci-dessous crée une liste de chaînes de caractères, y ajoute et en supprime des éléments, lit sa taille, puis affiche les valeurs restantes. Tout le code est écrit dans le fichier Program.cs.
Étape 1) Importez l'espace de noms System.Collections.Generic et déclarez une liste de chaînes de caractères.
Étape 2) Ajoutez des éléments avec la méthode Add et supprimez-en un avec la méthode Remove.
Étape 3) Lisez la propriété Count, puis parcourez la liste à l'aide d'une instruction foreach.
using System; using System.Collections.Generic; namespace DemoApplication { class Program { static void Main(string[] args) { List<string> tutorials = new List<string>(); tutorials.Add("Java"); tutorials.Add("Python"); tutorials.Add("Kotlin"); tutorials.Remove("Python"); Console.WriteLine(tutorials.Count); foreach (string tutorial in tutorials) { Console.WriteLine(tutorial); } Console.ReadKey(); } } }
Code Explication:-
- L'espace de noms System.Collections.Generic est importé afin que le type List soit disponible pour le programme.
- Une nouvelle liste Un dossier intitulé « tutorials » est créé, et trois noms sont ajoutés à l'aide de la méthode Add.
- La méthode Remove supprime la valeur «Python», ce qui laisse deux éléments dans la liste.
- La propriété Count renvoie le nombre d'éléments, et la boucle foreach affiche chaque valeur restante dans l'ordre.
Lorsque le programme s'exécute, il affiche d'abord le nombre de 2, Suivie par Java et Kotlin sur des lignes séparées. Ceci montre comment la taille d'une collection change à l'exécution, ce qu'un tableau de taille fixe ne peut pas faire.
Différence entre les tableaux et les collections en C#
A la fois un tableau Une collection regroupe des éléments similaires sous un même nom, mais leur comportement diffère une fois le programme lancé. Savoir quand utiliser l'une ou l'autre permet d'écrire un code plus clair et plus efficace.
Les principales différences sont énumérées ci-dessous :
- Dimensions Un tableau a une longueur fixe définie lors de sa déclaration, tandis qu'une collection peut s'agrandir ou se réduire à tout moment.
- Gestion des types : Un tableau stocke un seul type, tandis qu'une collection peut être de type sûr grâce aux génériques ou contenir des objets de types mixtes lorsqu'elle n'est pas générique.
- Endroit: Les tableaux sont intégrés au langage, tandis que les classes de collections résident dans les espaces de noms System.Collections et System.Collections.Generic.
- Opérations intégrées : Les collections offrent des méthodes prêtes à l'emploi pour ajouter, supprimer, rechercher et trier des éléments, tandis que les tableaux ne fournissent qu'un accès indexé de base.
- Utilisation optimale : Choisissez un tableau lorsque le nombre d'éléments est connu et fixe, et une collection lorsque ce nombre change au fur et à mesure de l'exécution du programme.
En résumé, les tableaux sont plus adaptés aux données de taille fixe, tandis que les collections offrent la flexibilité dont la plupart des applications concrètes ont besoin.

