Sobes.tech
Junior

Co může obsahovat delegát v C#?

sobes.tech AI

Odpověď od AI

Delegát v C# je typ, který představuje odkazy na metody s konkrétní signaturou (návratový typ a typy parametrů). Může obsahovat:

  1. Odkaz na statickou metodu:
    // Statická metoda
    public static void StaticMethod(int x) { }
    
    // Delegát odkazující na statickou metodu
    MyDelegate d = StaticMethod;
    
  2. Odkaz na instanční metodu:
    // Třída s instanční metodou
    public class MyClass
    {
        public void InstanceMethod(int y) { }
    }
    
    // Vytvoření instance třídy
    MyClass obj = new MyClass();
    
    // Delegát odkazující na instanční metodu
    MyDelegate d = obj.InstanceMethod;
    
  3. Seznam volání (invocation list) více metod: Delegát v C# je ve skutečnosti vícestupňový. Může obsahovat odkazy na více metod. Při volání takového delegáta jsou volány všechny metody v seznamu v pořadí jejich přidání.
    public delegate void MyDelegate(int value);
    
    public static void Method1(int z) { }
    public static void Method2(int w) { }
    
    // Vytvoření vícestupňového delegáta
    MyDelegate multiDelegate = Method1;
    multiDelegate += Method2; // Přidání druhé metody
    
    // Volání delegáta volá obě metody
    multiDelegate(10);