Sobes.tech
Junior

Mida võib sisaldada C#-i delegaat?

sobes.tech AI

Vastus AI-lt

C# keeles on delegeet tüüp, mis esindab viiteid meetoditele kindla signatuuri (tagastustüüp ja parameetritüübid) järgi. See võib sisaldada:

  1. Viidet staatilisele meetodile:
    // Staatiline meetod
    public static void StaticMethod(int x) { }
    
    // Delegeet, mis viitab staatilisele meetodile
    MyDelegate d = StaticMethod;
    
  2. Viidet näidismetodile (instance):
    // Klass, millel on näidismetod
    public class MyClass
    {
        public void InstanceMethod(int y) { }
    }
    
    // Klassist näidise loomine
    MyClass obj = new MyClass();
    
    // Delegeet, mis viitab näidismetodile
    MyDelegate d = obj.InstanceMethod;
    
  3. Mitme meetodi kutsumise nimekiri (invocation list): C#-s on delegeet tegelikult mitmekanaliline. See võib sisaldada viiteid mitmele meetodile. Kui sellist delegeeti kutsutakse, kutsutakse välja kõik nimekirja meetodid nende lisamise järjekorras.
    public delegate void MyDelegate(int value);
    
    public static void Method1(int z) { }
    public static void Method2(int w) { }
    
    // Mitmekanalilise delegeedi loomine
    MyDelegate multiDelegate = Method1;
    multiDelegate += Method2; // Teise meetodi lisamine
    
    // Delegeedi väljakutse kutsub välja mõlemad meetodid
    multiDelegate(10);