Chargement...

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

text
TEXT Code
using 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 comme collection dynamique en C#. La liste est créée et les éléments sont ajoutés avec la méthode Add(), illustrant la flexibilité par rapport aux tableaux statiques. Le parcours avec foreach garantit un accès sûr aux éléments sans risque d’erreur d’index. La méthode Contains() permet de vérifier rapidement la présence d’un élément. La suppression avec Remove() conserve l’ordre des éléments et montre comment C# gère automatiquement le redimensionnement de la collection.
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

text
TEXT Code
using 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\ pour gérer efficacement des objets complexes. Chaque produit est un objet, respectant les principes de la POO et facilitant l’extension et la maintenance. Dictionary permet un accès rapide aux éléments via la clé, essentiel pour les applications de gestion de stock ou d’analyse temps réel. Le parcours via produits.Values préserve l’encapsulation et assure un code sûr. Le bloc try-catch montre comment gérer les exceptions liées aux clés en double, suivant les bonnes pratiques pour un code robuste. Cet exemple démontre l’importance de choisir le bon type de collection pour optimiser la performance et la fiabilité dans des projets réels.

📊 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

Prêt à Commencer

Testez vos Connaissances

Testez votre compréhension de ce sujet avec des questions pratiques.

4
Questions
🎯
70%
Pour Réussir
♾️
Temps
🔄
Tentatives

📝 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