Classes génériques en C#

Les génériques introduits en C# 2.0. Les génériques vous permettent de définir une classe avec des types génériques pour ses attributs, méthodes, paramètres, etc. Chaque types génériques est remplacés par un type spécifique au moment de la compilation.
 
 
Ici, nous allons d’abord discuter le problème, puis le résoudre en utilisant une classes génériques.
 

Exemple de classe non générique
class Operation {  
    public bool IsEqual(double a, double b) {  
        if (a.Equals(b)) {
            return true;
        } else {
            return false;
        }
    }  
    public bool IsEqual(int a, int b) {  
        if (a.Equals(b)) {
            return true;
        } else {
            return false;
        }
    }  
}

Nous avons créé la classe « Operation ». Ensuite, nous avons créé deux méthodes qui vérifient si deux nombres sont égaux, une pour le type « double » et la deuxième pour le type « int ». Donc la classe contient des méthodes surchargées.

Donc, si on veut tester l’égalité de deux chaines de caractères, le code ci-dessus ne fonctionnera pas et nous devrons créer une autre méthode pour faire la même chose pour les chaines de caractères. Nous pouvons résoudre ce problème avec des types génériques.

class Operation < T > {
    public bool IsEqual(T a, T b) {
        if (a.Equals(b)) {
            return true;
        } else {
            return false;
        }
    }
}

Dans le code ci-dessus, nous avons créé la classe « Operation » avec le type générique T de sorte que la classe est Operation <T>. Donc si on veut tester l’égalité de deux entiers, nous allons créer un objet de type « int » :

Operation<int> obj = new Operation<int>();    
bool res = obj.IsEqual(2, 2);

La méme chose pour tester l’égalité de deux nombres de type « double » :

Operation<double> obj = new Operation<double>();    
bool res = obj.IsEqual(0.55, 0.58);

Avec cette classe, nous n’avons pas besoin de surcharger la méthode IsEqual car cette méthode accepte un type générique.
 
 

Exemple complet d’une classe générique
using System;

class Operation < T > {
    public bool IsEqual(T a, T b) {
        if (a.Equals(b)) {
            return true;
        } else {
            return false;
        }
    }
}


public class Program {
    public static void Main(string[] args) {

        Operation < int > obj1 = new Operation < int > ();
        Console.WriteLine(obj1.IsEqual(2, 2));

        Operation < double > obj2 = new Operation < double > ();
        Console.WriteLine(obj2.IsEqual(0.55, 0.58));
    }
}

La sortie :

True
False
qcm-csharp

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *