Un delegado es una clase que le permite almacenar una referencia a un método con una firma específica (orden y tipos de valores aceptados y devueltos) de una clase arbitraria. [1] [2] [3] [4] . Las instancias delegadas contienen referencias a métodos específicos de clases específicas.
Los delegados se utilizan, en particular, para definir el prototipo de una función de devolución de llamada , como en el modelo de eventos de .NET Framework .
A partir de la declaración del tipo de delegado, el compilador genera una clase que se deriva de System.MulticastDelegate. Entonces, la firma de una función que toma un delegado como argumento podría verse así:
Public MyFunction ( Delegar otra función );Una característica adicional de los delegados es que se les puede llamar de forma asincrónica mediante BeginInvoke(). En este caso, se selecciona un grupo de subprocesos libres y la función especificada se ejecuta en paralelo en su contexto. Sin embargo, vale la pena señalar que la cantidad de subprocesos en el grupo es limitada (hay 25 en la implementación actual de .NET), y el resto de las llamadas esperarán su turno.
El ejemplo imprime en la consola la línea "Se llamó a una función con el parámetro hola".