Code | Résultat | Remarques |
using System; namespace Exemples { delegate bool Filtre(string chaine, string compare); class Delegues { static void Main(string[] args) { Filtre f = new Filtre(DebutAlphabet); string[] animaux = new string[] { "Cheval", "Fourmi", "Girafe", "Lion", "Poule", "Vache", "Yack" }; // affiche tous les animaux avant "L" dans l'alphabet Affiche(animaux, "L", DebutAlphabet); Console.ReadKey(); } // méthode de filtre static bool DebutAlphabet(string chaine, string compare) { return compare.CompareTo(chaine) > 0; } // méthode d'affichage du résultat static void Affiche(string[] noms, string compare, Filtre f) { int cpt = 0; foreach (string nom in noms) if (f(nom, compare)) // invoque le délégué Console.WriteLine("Chaine N°{0} : {1}", cpt++, nom); } } } |
Chaîne N°0 : Cheval Chaîne N°1 : Fourmi Chaîne N°2 : Girafe |
Cet exemple affiche tous les animaux avant "L" dans l'alphabet... |
Code | Résultat | Remarques |
using System; namespace Exemples { delegate void LanceMethode(); public class Test { public Test() { LanceMethode methodes = null; methodes += new LanceMethode(Methode1); methodes += new LanceMethode(Methode2); methodes(); } void Methode1() { Console.WriteLine("Methode1"); } void Methode2() { Console.WriteLine("Methode2"); } } class DeleguesMultiples1 { static void Main(string[] args) { new Test(); // affiche Methode1 et Methode2 Console.ReadKey(); } } } |
Methode1 Methode2 |
Dans cet exemple, nous déclarons un délégué très simple appelé LanceMethode, que nous utilisons pour pointer et invoquer les méthodes methode1 et methode2 de manière séquentielle (en utilisant l'opérateur +=). |
using System; namespace Exemples { delegate void LanceMethode(); public class Test { public Test() { LanceMethode methodes = null; methodes += new LanceMethode(Methode1); methodes += new LanceMethode(Methode2); methodes -= new LanceMethode(Methode1); methodes(); } void Methode1() { Console.WriteLine("Methode1"); } void Methode2() { Console.WriteLine("Methode2"); } } class DeleguesMultiples2 { static void Main(string[] args) { new Test(); // affiche Methode2 uniquement Console.ReadKey(); } } } |
Methode2 |
Un délégué peut également être supprimé d'un autre délégué en utilisant l'opérateur -=. |