delegado (referência de C#)
A declaração de um tipo delegado é semelhante a umaassinaturado método. Ele tem um valor retornado e qualquer número de parâmetros de qualquer tipo:
public delegate void TestDelegate(string message);
public delegate int TestDelegate(MyType m, long num);
A delegate é um tipo de referência que pode ser usado para encapsular um nomeada ou um método anônimo.Delegados são semelhantes aos ponteiros de função em C++. Entretanto, os delegados são fortemente tipado e seguro.Para aplicativos de delegados, consulte delegados e Representantes genéricos.
Comentários
Delegados são a base para eventos.
Um delegado pode ser instanciada associando-o com um nome ou método anônimo.Para obter mais informações, consulte Métodos chamado e Métodos anônimos.
delegado deve ser instanciado com um método ou expressão lambda que tem um tipo de retorno compatível e parâmetros de entrada.Para obter mais informações sobre o grau de variação é permitida aassinaturado método, consulte Variação em delegados (C# e Visual Basic). Para uso com métodos anônimos, delegado e o código a ser associado ele são declarados juntos.As duas maneiras de criar uma instância de delegados são discutidas nesta seção.
Exemplo
// 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: {0}", multByTwo);
// Instantiate delegate with anonymous method:
MathAction ma2 = delegate(double input)
{
return input * input;
};
double square = ma2(5);
Console.WriteLine("square: {0}", square);
// Instantiate delegate with lambda expression
MathAction ma3 = s => s * s * s;
double cube = ma3(4.375);
Console.WriteLine("cube: {0}", cube);
}
// Output:
// multByTwo: 9
// square: 25
// cube: 83.740234375
}
Especificação de linguagem do C#
Para obter mais informações, consulte Especificação de linguagem do C# A especificação da linguagem é a fonte definitiva para a sintaxe e o uso da linguagem C#.
Consulte também
Referência
Tipos de referência (referência de C#)
Representantes (guia de programação do C#)
Eventos (guia de programação do C#)
Representantes com nome vs. Métodos anônimos (guia de programação do C#)
Métodos anônimos (guia de programação do C#)