Sobes.tech
Junior

Ko var saturēt delegāts C#?

sobes.tech AI

Atbilde no AI

C# valodā delegāts ir tips, kas pārstāv atsauces uz metodēm ar konkrētu parakstu (atgriešanas tipu un parametru tipus). Tas var saturēt:

  1. Atsauci uz statisku metodi:
    // Statiska metode
    public static void StaticMethod(int x) { }
    
    // Delegāts, kas atsaucas uz statisku metodi
    MyDelegate d = StaticMethod;
    
  2. Atsauci uz instancijas metodi:
    // Klase ar instancijas metodi
    public class MyClass
    {
        public void InstanceMethod(int y) { }
    }
    
    // Klases instances izveide
    MyClass obj = new MyClass();
    
    // Delegāts, kas atsaucas uz instancijas metodi
    MyDelegate d = obj.InstanceMethod;
    
  3. Vairāku metožu izsaukšanas saraksts (invocation list): C# delegāts patiesībā ir daudzkanāla. Tas var saturēt atsauces uz vairākām metodēm. Izsaucot tādu delegātu, tiek izsauktas visas sarakstā iekļautās metodes pēc to pievienošanas secības.
    public delegate void MyDelegate(int value);
    
    public static void Method1(int z) { }
    public static void Method2(int w) { }
    
    // Vairāku metožu delegāta izveide
    MyDelegate multiDelegate = Method1;
    multiDelegate += Method2; // Pievienot otro metodi
    
    // Delegāta izsaukšana izsauc abus metodes
    multiDelegate(10);