Compartilhar via


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

Palavras-chave C#

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#)

Conceitos

Guia de programação do C#

Outros recursos

Referência de C#