Sobes.tech
Junior

Was kann ein Delegat in C# enthalten?

sobes.tech KI

Antwort von AI

Ein Delegate in C# ist ein Typ, der Verweise auf Methoden mit einer bestimmten Signatur (Rückgabetyp und Parameterarten) repräsentiert. Er kann enthalten:

  1. Verweis auf eine statische Methode:
    // Statische Methode
    public static void StaticMethod(int x) { }
    
    // Delegate, das auf eine statische Methode verweist
    MyDelegate d = StaticMethod;
    
  2. Verweis auf eine Instanzmethode:
    // Klasse mit einer Instanzmethode
    public class MyClass
    {
        public void InstanceMethod(int y) { }
    }
    
    // Erstellen einer Instanz der Klasse
    MyClass obj = new MyClass();
    
    // Delegate, das auf eine Instanzmethode verweist
    MyDelegate d = obj.InstanceMethod;
    
  3. Aufrufliste (invocation list) mehrerer Methoden: Ein Delegate in C# ist in Wirklichkeit multikanal. Es kann Referenzen auf mehrere Methoden enthalten. Beim Aufruf eines solchen Delegates werden alle Methoden in der Liste in der Reihenfolge ihrer Hinzufügung aufgerufen.
    public delegate void MyDelegate(int value);
    
    public static void Method1(int z) { }
    public static void Method2(int w) { }
    
    // Erstellen eines multikanalen Delegates
    MyDelegate multiDelegate = Method1;
    multiDelegate += Method2; // Hinzufügen einer zweiten Methode
    
    // Aufruf des Delegates ruft beide Methoden auf
    multiDelegate(10);