Collections
Les collections en C# constituent un élément fondamental pour le développement de logiciels modernes. Elles offrent des structures de données dynamiques permettant de stocker, gérer et manipuler efficacement des ensembles de données. Contrairement aux tableaux statiques, les collections permettent un redimensionnement automatique, des recherches rapides, le tri et l’itération avancée, ce qui est essentiel pour développer des applications évolutives et maintenables. La maîtrise des collections permet également d’implémenter des algorithmes efficaces et d’appliquer les principes de la programmation orientée objet (POO), tels que l’encapsulation, l’héritage et le polymorphisme.
En C#, les collections comprennent des types comme List, Dictionary, HashSet, Queue et Stack, chacun optimisé pour des scénarios spécifiques. Les List offrent un stockage ordonné et dynamique, les Dictionary associent des clés uniques à des valeurs pour des recherches rapides, les HashSet stockent des éléments uniques, les Queue suivent le principe FIFO (premier entré, premier sorti), et les Stack suivent le principe LIFO (dernier entré, premier sorti). Ce tutoriel permettra aux développeurs de comprendre comment choisir et utiliser la collection appropriée selon le contexte, de gérer les exceptions, d’optimiser les performances et d’éviter les erreurs fréquentes telles que les fuites de mémoire ou les algorithmes inefficaces.
À travers des exemples pratiques, le lecteur apprendra à manipuler les collections, à implémenter des opérations avancées et à intégrer ces structures dans des projets réels, améliorant ainsi la qualité, la maintenabilité et la performance de leurs applications C#.
Exemple de Base
textusing System;
using System.Collections.Generic;
namespace ExempleCollections
{
class Program
{
static void Main(string\[] args)
{
// Création d'une liste dynamique d'entiers
List<int> nombres = new List<int>();
// Ajout d'éléments
nombres.Add(10);
nombres.Add(20);
nombres.Add(30);
// Parcours et affichage des éléments
Console.WriteLine("Éléments de la liste :");
foreach (int n in nombres)
{
Console.WriteLine(n);
}
// Vérification de l'existence d'un élément
if (nombres.Contains(20))
{
Console.WriteLine("La liste contient l'élément 20.");
}
// Suppression d'un élément
nombres.Remove(10);
Console.WriteLine("Après suppression de 10 :");
nombres.ForEach(n => Console.WriteLine(n));
}
}
}
Cet exemple montre l'utilisation de List
Dans des projets réels, une telle liste pourrait représenter des données utilisateurs, des tâches à exécuter ou des résultats numériques. L'exemple respecte les bonnes pratiques C#, avec l'utilisation de génériques pour la sécurité des types, des conventions de nommage claires et l'utilisation de Lambda expressions pour un code concis. Il prépare également à l’utilisation de collections plus avancées comme Dictionary ou HashSet pour des applications performantes et évolutives.
Exemple Pratique
textusing System;
using System.Collections.Generic;
namespace ExempleCollectionsAvance
{
class Produit
{
public int Id { get; set; }
public string Nom { get; set; }
public double Prix { get; set; }
}
class Program
{
static void Main(string[] args)
{
// Création d'un dictionnaire liant l'ID à un produit
Dictionary<int, Produit> produits = new Dictionary<int, Produit>();
// Ajout de produits
produits.Add(1, new Produit { Id = 1, Nom = "Laptop", Prix = 4500 });
produits.Add(2, new Produit { Id = 2, Nom = "Souris", Prix = 150 });
produits.Add(3, new Produit { Id = 3, Nom = "Clavier", Prix = 300 });
// Affichage des produits dont le prix > 200
Console.WriteLine("Produits dont le prix est supérieur à 200 :");
foreach (var produit in produits.Values)
{
if (produit.Prix > 200)
Console.WriteLine($"{produit.Nom} - Prix : {produit.Prix}");
}
// Gestion des exceptions pour les clés en double
try
{
produits.Add(2, new Produit { Id = 2, Nom = "Moniteur", Prix = 1200 });
}
catch (ArgumentException ex)
{
Console.WriteLine("Erreur : clé en double. " + ex.Message);
}
}
}
}
L’exemple pratique illustre l’utilisation d’un Dictionary\
📊 Tableau de Référence
C# Element/Concept | Description | Usage Example |
---|---|---|
List<T> | Collection dynamique ordonnée | List<int> nombres = new List<int>(); |
Dictionary\<TKey, TValue> | Association clé-valeur pour recherches rapides | Dictionary\<int, string> dict = new Dictionary\<int, string>(); |
HashSet<T> | Stocke des éléments uniques sans ordre | HashSet<string> nomsUniques = new HashSet<string>(); |
Queue<T> | File FIFO (premier entré, premier sorti) | Queue<int> file = new Queue<int>(); |
Stack<T> | Pile LIFO (dernier entré, premier sorti) | Stack<int> pile = new Stack<int>(); |
Les points clés à retenir incluent la compréhension des types de collections, la manipulation efficace et sécurisée des éléments, et l’intégration dans une architecture logicielle plus large. La maîtrise des collections impacte directement la qualité, la performance et la maintenabilité des applications C#. Les prochaines étapes recommandées comprennent l’étude de LINQ pour interroger les collections, les collections concurrentes pour les environnements multi-thread et les patterns de conception utilisant des collections. Les développeurs devraient pratiquer l’application des collections dans des projets réels tels que la gestion de stock, les systèmes de cache et les pipelines de données, en s’appuyant sur la documentation officielle et les ressources communautaires pour renforcer leurs compétences.
🧠 Testez Vos Connaissances
Testez vos Connaissances
Testez votre compréhension de ce sujet avec des questions pratiques.
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut