Sobes.tech
Junior

Čo môže obsahovať delegát v C#?

sobes.tech AI

Odpoveď od AI

Delegát v C# je typ, ktorý predstavuje odkazy na metódy s konkrétnou podpisom (typ návratu a typy parametrov). Môže obsahovať:

  1. Odkaz na statickú metódu:
    // Statická metóda
    public static void StaticMethod(int x) { }
    
    // Delegát odkazujúci na statickú metódu
    MyDelegate d = StaticMethod;
    
  2. Odkaz na inštančnú metódu:
    // Trieda s inštančnou metódou
    public class MyClass
    {
        public void InstanceMethod(int y) { }
    }
    
    // Vytvorenie inštancie triedy
    MyClass obj = new MyClass();
    
    // Delegát odkazujúci na inštančnú metódu
    MyDelegate d = obj.InstanceMethod;
    
  3. Zoznam volaní (invocation list) viacerých metód: Delegát v C# je v skutočnosti viackanálový. Môže obsahovať odkazy na viacero metód. Pri volaní takéhoto delegáta sú volané všetky metódy v zozname v poradí ich pridania.
    public delegate void MyDelegate(int value);
    
    public static void Method1(int z) { }
    public static void Method2(int w) { }
    
    // Vytvorenie viackanálového delegáta
    MyDelegate multiDelegate = Method1;
    multiDelegate += Method2; // Pridanie druhej metódy
    
    // Volanie delegáta volá obe metódy
    multiDelegate(10);