Sobes.tech
Junior

Šta može sadržavati delegat u C#?

sobes.tech АИ

Одговор од АИ

Delegat u C# je tip koji predstavlja reference na metode sa specifičnom potpisom (tip povratne vrednosti i tipovi parametara). Može sadržavati:

  1. Referencu na statičku metodu:
    // Statička metoda
    public static void StaticMethod(int x) { }
    
    // Delegat koji referencira statičku metodu
    MyDelegate d = StaticMethod;
    
  2. Referencu na instancu metode:
    // Klasa sa metodom instance
    public class MyClass
    {
        public void InstanceMethod(int y) { }
    }
    
    // Kreiranje instance klase
    MyClass obj = new MyClass();
    
    // Delegat koji referencira metodu instance
    MyDelegate d = obj.InstanceMethod;
    
  3. Lista poziva (invocation list) više metoda: Delegat u C# je zapravo višekanalni. Može sadržavati reference na više metoda. Pri pozivu takvog delegata, pozivaju se sve metode u listi redom po dodavanju.
    public delegate void MyDelegate(int value);
    
    public static void Method1(int z) { }
    public static void Method2(int w) { }
    
    // Kreiranje višekanalnog delegata
    MyDelegate multiDelegate = Method1;
    multiDelegate += Method2; // Dodavanje druge metode
    
    // Poziv delegata poziva obe metode
    multiDelegate(10);