Share via


delegate (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 delegações (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 a Especificação da linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Consulte também

Referência

Palavras-chave C#

Tipos de referência (Referência de C#)

Delegados (Guia de Programação em C#)

Eventos (Guia de Programação em C#)

Delegados com métodos nomeados versus anônimos (Guia de Programação em C#)

Métodos anônimos (Guia de Programação em C#)

Conceitos

Guia de Programação em C#

Outros recursos

Referência de C#