Qu’est-ce qu’un objet générique en C#?

février 16, 2025

Les génériques sont une technique de programmation puissante en C#.NET permettant d’écrire du code réutilisable pour différents types de données sans réécrire la logique pour chaque type. Ils fonctionnent en utilisant des paramètres de type, représentés par des lettres majuscules entre crochets <>, comme List<T>, Dictionary<TKey, TValue>. T, TKey et TValue sont des paramètres de type représentant le type de données concret utilisé lors de l’instanciation de l’objet.

Une des applications les plus courantes des génériques est la création de collections comme List<T>. Avant les génériques, pour créer une liste d’objets Student, il fallait utiliser ArrayList et effectuer un transtypage à chaque récupération d’élément. Cela risquait de provoquer des erreurs d’exécution en cas de transtypage incorrect.

#
// Sans générique
ArrayList students = new ArrayList();
students.Add(new Student());
students.Add(new Car()); // Aucune erreur de compilation

Student first = (Student)students[0]; // Transtypage requis, risque d'erreur d'exécution

Avec les génériques, List<T> résout ce problème en autorisant uniquement l’ajout d’objets de type T à la liste. Le compilateur détecte les erreurs dès la compilation si l’on tente d’ajouter un objet de type incorrect.

#
// Avec générique
List<Student> students = new List<Student>();
students.Add(new Student()); 
students.Add(new Car()); // Erreur de compilation

Student first = students[0]; // Aucun transtypage requis

L’utilisation des génériques offre plusieurs avantages :

  • Réutilisation du code : Écrire le code une seule fois pour plusieurs types de données. Par exemple, List<T> peut être utilisé pour List<int>, List<string>, List<Student>, etc.
  • Sécurité de type : Le compilateur vérifie les types de données à la compilation, réduisant les erreurs d’exécution.
  • Performance : Évite le boxing/unboxing lors de la manipulation de types valeur, améliorant les performances du programme.
  • Lisibilité et maintenance : Code plus clair, plus facile à comprendre et à maintenir.

Les génériques ne sont pas seulement utilisés dans les collections, mais aussi dans la définition de méthodes (méthodes génériques) et de classes (classes génériques). Par exemple, une méthode Swap<T> peut échanger la valeur de deux variables de n’importe quel type.

#
public static void Swap<T>(ref T a, ref T b)
{
    T temp = a;
    a = b;
    b = temp;
}


int x = 10;
int y = 20;
Swap<int>(ref x, ref y); // Échange de deux entiers

string str1 = "Hello";
string str2 = "World";
Swap<string>(ref str1, ref str2); // Échange de deux chaînes

En résumé, les génériques sont une fonctionnalité importante de C#.NET, permettant d’écrire du code flexible, sûr et efficace. Ils sont la base de nombreuses technologies comme LINQ et jouent un rôle crucial dans le développement d’applications modernes. Comprendre ce qu’est un objet générique et comment l’utiliser permet aux développeurs d’améliorer la qualité de leur code et d’optimiser les performances de leurs applications.

Leave A Comment

Create your account