Junior
¿Qué puede contener un delegado en C#?
sobes.tech AI
Respuesta de la IA
Un delegado en C# es un tipo que representa referencias a métodos con una firma específica (tipo de retorno y tipos de parámetros). Puede contener:
- Referencia a un método estático:
// Método estático public static void StaticMethod(int x) { } // Delegado que referencia un método estático MyDelegate d = StaticMethod; - Referencia a un método de instancia:
// Clase con método de instancia public class MyClass { public void InstanceMethod(int y) { } } // Creación de una instancia de la clase MyClass obj = new MyClass(); // Delegado que referencia un método de instancia MyDelegate d = obj.InstanceMethod; - Lista de invocación (invocation list) de varios métodos: Un delegado en C# es en realidad multicanal. Puede contener referencias a varios métodos. Cuando se llama a dicho delegado, se llaman todos los métodos en la lista en orden de adición.
public delegate void MyDelegate(int value); public static void Method1(int z) { } public static void Method2(int w) { } // Creación de un delegado multicanal MyDelegate multiDelegate = Method1; multiDelegate += Method2; // Añadir un segundo método // Llamar al delegado invoca ambos métodos multiDelegate(10);