delegate (Referencia de C#)
Actualización: noviembre 2007
La declaración de un tipo delegado es similar a una firma de método. Tiene un valor devuelto y un número cualquiera de parámetros de cualquier tipo:
public delegate void TestDelegate(string message);
public delegate int TestDelegate(MyType m, long num);
Un delegate es un tipo de referencia que puede utilizarse para encapsular un método con nombre o anónimo. Los delegados son similares a los punteros a funciones de C++, pero son más seguros y proporcionan mayor seguridad de tipos. Para las aplicaciones de delegados, vea Delegados y Delegados genéricos.
Comentarios
Los delegados son la base de los eventos.
Se pueden crear instancias de un delegado asociándolo a un método con nombre o anónimo. Para obtener más información, vea Métodos con nombre y Métodos anónimos.
Para crear instancias del delegado debe utilizarse un método o una expresión lambda que tenga un tipo de valor devuelto y parámetros de entrada compatibles. Para obtener más información sobre el grado de variación permitida en la firma de método, vea Covarianza y contravarianza en los delegados. Para el uso con métodos anónimos, el delegado y el código que se van a asociar se declaran juntos. En esta sección se describen las dos formas de crear instancias de delegados.
Ejemplo
// Declare delegate -- defines required signature:
delegate double MathAction(double num);
class DelegateTest
{
// Regular method that matches signature:
static double Double(double input)
{
return input * 2;
}
static void Main()
{
// Instantiate delegate with named method:
MathAction ma = Double;
// Invoke delegate ma:
double multByTwo = ma(4.5);
Console.WriteLine(multByTwo);
// Instantiate delegate with anonymous method:
MathAction ma2 = delegate(double input)
{
return input * input;
};
double square = ma2(5);
Console.WriteLine(square);
// Instantiate delegate with lambda expression
MathAction ma3 = s => s * s * s;
double cube = ma3(4.375);
Console.WriteLine(cube);
}
}
Especificación del lenguaje C#
Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.
1.11 Delegados
15 Delegados
Vea también
Conceptos
Referencia
Tipos de referencia (Referencia de C#)
Delegados (Guía de programación de C#)
Eventos (Guía de programación de C#)
Delegados con métodos con nombre y delegados con métodos anónimos (Guía de programación de C#)
Métodos anónimos (Guía de programación de C#)