Sobes.tech
Junior

Wat kan een delegate in C# bevatten?

sobes.tech AI

Antwoord van AI

Een delegate in C# is een type dat verwijzingen naar methoden met een specifieke handtekening (returntype en parameter types) vertegenwoordigt. Het kan bevatten:

  1. Verwijzing naar een statische methode:
    // Statische methode
    public static void StaticMethod(int x) { }
    
    // Delegate die verwijst naar een statische methode
    MyDelegate d = StaticMethod;
    
  2. Verwijzing naar een instantie methode:
    // Klasse met een instantie methode
    public class MyClass
    {
        public void InstanceMethod(int y) { }
    }
    
    // Aanmaken van een instantie van de klasse
    MyClass obj = new MyClass();
    
    // Delegate die verwijst naar een instantie methode
    MyDelegate d = obj.InstanceMethod;
    
  3. Lijst van aanroepen (invocation list) van meerdere methoden: Een delegate in C# is in feite multicanal. Het kan verwijzingen bevatten naar meerdere methoden. Bij het aanroepen van zo'n delegate worden alle methoden in de lijst in de volgorde van hun toevoeging aangeroepen.
    public delegate void MyDelegate(int value);
    
    public static void Method1(int z) { }
    public static void Method2(int w) { }
    
    // Aanmaken van een multicanale delegate
    MyDelegate multiDelegate = Method1;
    multiDelegate += Method2; // Toevoegen van een tweede methode
    
    // Aanroepen van de delegate roept beide methoden aan
    multiDelegate(10);