Share via


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:

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

Árvores de Expressão

Referência

Instruções, expressões, e operadores (guia de programação C#)

Representantes (guia de programação C#)