Sobes.tech
Junior

Que peut contenir un délégué en C#?

sobes.tech IA

Réponse de l'IA

Un délégué en C# est un type qui représente des références à des méthodes avec une signature spécifique (type de retour et types de paramètres). Il peut contenir :

  1. Référence à une méthode statique :
    // Méthode statique
    public static void StaticMethod(int x) { }
    
    // Délégué référant à une méthode statique
    MyDelegate d = StaticMethod;
    
  2. Référence à une méthode d'instance :
    // Classe avec une méthode d'instance
    public class MyClass
    {
        public void InstanceMethod(int y) { }
    }
    
    // Création d'une instance de la classe
    MyClass obj = new MyClass();
    
    // Délégué référant à une méthode d'instance
    MyDelegate d = obj.InstanceMethod;
    
  3. Liste d'invocation (invocation list) de plusieurs méthodes : Un délégué en C# est en fait multicanal. Il peut contenir des références à plusieurs méthodes. Lorsqu'il est appelé, toutes les méthodes de la liste sont invoquées dans l'ordre de leur ajout.
    public delegate void MyDelegate(int value);
    
    public static void Method1(int z) { }
    public static void Method2(int w) { }
    
    // Création d'un délégué multicanal
    MyDelegate multiDelegate = Method1;
    multiDelegate += Method2; // Ajout d'une deuxième méthode
    
    // Appeler le délégué invoque les deux méthodes
    multiDelegate(10);