static void Main(string[] args) { //Il n'y a pas de () à la fin du nom de la méthode car il s'agit d'une affectation TypeDelegue variable = MethodeDuDelegue; //Un délégué peut prendre à sa charge plusieurs méthodes ! On appelle cela le multicast //Toutefois le mécanisme n'est pas automatique, il faut le renseigner par l'opérateur += //Ajout de la méthode AutreMethodeDuDelegue au délégué variable += AutreMethodeDuDelegue; //Les () enclenchent la ou les méthodes du délégué variable("Hello World !"); Console.WriteLine(); Console.ReadKey(); //De meme l'opérateur -= va soustraire la méthode du délégué variable -= AutreMethodeDuDelegue; variable("Hello Wallonie !"); Console.WriteLine(); Console.ReadKey(); MethodeAvecDelegue("Hello", "Hornu", variable); Console.WriteLine(); Console.ReadKey(); //Il est tout à fait possible d'additionner des délégués s'ils sont de même définition //Cela donnera un délégué qui propose l'ensemble des méthodes TypeDelegue A = MethodeDuDelegue; TypeDelegue B = AutreMethodeDuDelegue; TypeDelegue C = A + B; C("Hello Technocite !"); Console.WriteLine(); Console.ReadKey(); //On peut aussi soustraire C -= B; // = C=C-B = C=A-B C("Hello Technocite !"); Console.WriteLine(); Console.ReadKey(); //Actions et fonctions affiche1(); affiche2("Bonjour"); affiche3("Bonjour", "Vlad"); affiche4("Bonjour", "Vlad", 1); print("Bonjour"); Console.WriteLine(); Console.ReadKey(); Console.WriteLine(func1.Invoke(5)); Console.WriteLine(func2.Invoke(true, 10)); Console.WriteLine("Addition de 4 et 5 = " + add.Invoke(4, 5)); Console.WriteLine(); Console.ReadKey(); }
//Une utilité des délégués est de pouvoir être passés en paramètre de méthode public static void MethodeAvecDelegue(string x, string y, TypeDelegue retour) { retour(String.Format("Le message est: {0} {1} !", x, y)); }