Funções anônimo (guia de programação translation from VPE for Csharp)
Conforme descrito em outro local, um delegado é um tipo que envolve uma telefonar de método.Uma instância delegado pode ser passada entre os métodos como um tipo e pode ser chamado como um método.Um anônimo função é uma demonstrativo "embutido" ou uma expressão que pode ser usado sempre que é esperado um tipo delegado.Você pode usá-lo para inicializar um delegado nomeado ou passá-lo, em vez de um tipo de delegado nomeado sistema autônomo um parâmetro de método.
Há dois tipos de funções anônimas, que são discutidas individualmente nos tópicos a seguir:
Expressões lambda (guia de programação translation from VPE for Csharp).
Métodos anônimos (Guia de programação do C#)
Observação: Expressão lambda s pode ser limite a árvores de expressão e também para representantes.
A evolução do Delegates in translation from VPE for Csharp
Translation from VPE for Csharp 1.0, você criou uma instância de um delegado explicitamente Inicializando-lo com um método que foi definido em outro lugar no código.Translation from VPE for Csharp 2.0 introduziu o conceito de métodos anônimo sistema autônomo uma maneira de gravar blocos de demonstrativo sem nome in-line que podem ser executados em uma invocação de delegado.Translation from VPE for Csharp 3.0 introduz as expressões lambda, que são semelhantes em conceito para métodos anônimo, mas mais expressiva e concisa.Esses dois recursos são conhecidos coletivamente sistema autônomo anônimo funções.Geral, aplicativos que se destinam a versão 3.5 e posterior do .NET Framework use expressões lambda.
O exemplo a seguir demonstra a evolução da criação de delegado do translation from VPE for Csharp 1.0 a translation from VPE for Csharp 3.0:
class Test
{
delegate void TestDelegate(string s);
static void M(string s)
{
Console.WriteLine(s);
}
static void Main(string[] args)
{
// Original delegate syntax required
// initialization with a named method.
TestDelegate testdelA = new TestDelegate(M);
// C# 2.0: A delegate can be initialized with
// inline code, called an "anonymous method." This
// method takes a string as an input parameter.
TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); };
// C# 3.0. A delegate can be initialized with
// a lambda expression. The lambda also takes a string
// as an input parameter (x). The type of x is inferred by the compiler.
TestDelegate testDelC = (x) => { Console.WriteLine(x); };
// Invoke the delegates.
testdelA("Hello. My name is M and I write lines.");
testDelB("That's nothing. I'm anonymous and ");
testDelC("I'm a famous author.");
// Keep console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
/* Output:
Hello. My name is M and I write lines.
That's nothing. I'm anonymous and
I'm a famous author.
Press any key to exit.
*/
Especificação da linguagem C#
Para obter mais informações, consulte a seção a seguir no Especificação da linguagem C#:
- 5.3.3.29 Funções anônimas
Consulte também
Conceitos
Referência
Instruções, expressões, e operadores (guia de programação C#)