delegate (C# Reference)
A declaração do tipo delegate é semelhante a uma assinatura de método. Método regular que corresponde a assinatura:
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 nome ou um método anônimo. Representantes são semelhantes aos do the ponteiros de função em C++; entretanto, representantes são "type-safe" e seguros. Para aplicativos de delegados, consulte delegados e Representantes genéricos.
Comentários
Delegates são a base para Eventos.
Um delegate pode ser instanciado associando-o a um método nomeado ou anônima. Para obter mais informações, consulte Métodos de chamada e Métodos anônimos.
O delegado deve ser instanciado com um método ou expressão lambda que tem um tipo compatível de retorno e parâmetros de entrada. Para obter mais informações sobre o grau de variação é permitida na assinatura do método, consulte Variação de delegados (C# e Visual Basic). Para uso com métodos anônimos, o delegate e o código a ser associado a ele são declarados juntos. Ambas as direções de representantes instantiating 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);
// 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);
}
}
Especificação da linguagem C#
Para obter mais informações, consulte C# Language Specification A especificação de linguagem é a fonte definitiva para a sintaxe e o uso de C#.
Consulte também
Referência
Reference Types (C# Reference)
Delegates (C# Programming Guide)
Representantes com nome vs. Anonymous Methods (C# Programming Guide)
Anonymous Methods (C# Programming Guide)