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.
