Sobes.tech
Junior

Mit tartalmazhat egy delegált C#-ban?

sobes.tech MI

Válasz az MI-től

A C#-ban a delegate egy típus, amely a meghatározott aláírással (visszatérési típus és paraméter típusok) rendelkező módszerekre mutató hivatkozásokat reprezentál. Tartalmazhat:

  1. Statikus módszerre mutató hivatkozás:
    // Statikus módszer
    public static void StaticMethod(int x) { }
    
    // Delegát, amely statikus módszerre mutat
    MyDelegate d = StaticMethod;
    
  2. Példány módszerre mutató hivatkozás:
    // Osztály példány módszerrel
    public class MyClass
    {
        public void InstanceMethod(int y) { }
    }
    
    // Osztály példányának létrehozása
    MyClass obj = new MyClass();
    
    // Delegát, amely példány módszerre mutat
    MyDelegate d = obj.InstanceMethod;
    
  3. Több módszerből álló hívási lista (invocation list): A C#-ban a delegate valójában többcsatornás. Tartalmazhat több módszerre mutató hivatkozásokat. Amikor ilyen delegált hívás történik, minden listaelemet meghívnak a hozzáadás sorrendjében.
    public delegate void MyDelegate(int value);
    
    public static void Method1(int z) { }
    public static void Method2(int w) { }
    
    // Többcsatornás delegát létrehozása
    MyDelegate multiDelegate = Method1;
    multiDelegate += Method2; // Második módszer hozzáadása
    
    // A delegált hívás mindkét módszert meghívja
    multiDelegate(10);