Junior
Cosa può contenere un delegato in C#?
sobes.tech AI
Risposta dell'AI
Un delegato in C# è un tipo che rappresenta riferimenti a metodi con una firma specifica (tipo di ritorno e tipi di parametri). Può contenere:
- Riferimento a un metodo statico:
// Metodo statico public static void StaticMethod(int x) { } // Delegato che fa riferimento a un metodo statico MyDelegate d = StaticMethod; - Riferimento a un metodo di istanza:
// Classe con metodo di istanza public class MyClass { public void InstanceMethod(int y) { } } // Creazione di un'istanza della classe MyClass obj = new MyClass(); // Delegato che fa riferimento a un metodo di istanza MyDelegate d = obj.InstanceMethod; - Lista di invocazione (invocation list) di più metodi: Un delegato in C# è in realtà multicanale. Può contenere riferimenti a più metodi. Quando viene chiamato, tutti i metodi nella lista vengono invocati nell'ordine di aggiunta.
public delegate void MyDelegate(int value); public static void Method1(int z) { } public static void Method2(int w) { } // Creazione di un delegato multicanale MyDelegate multiDelegate = Method1; multiDelegate += Method2; // Aggiunta di un secondo metodo // Chiamata del delegato invoca entrambi i metodi multiDelegate(10);