Compartilhar via


delegado (referência C#) 

A declaração do tipo delegado é semelhante à assinatura de um 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 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 and 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 nomeados and Métodos anônimo.

O delegado deve ser instanciado com uma expressão lambda ou de método tem um tipo compatível de retorno e parâmetros de entrada.Para obter mais informações sobre o grau de variação é permitido na assinatura do método, consulte Covariância e Contravariance em delegates.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 as seções a seguir no Especificação da linguagem C#:

  • Delegates 1,11

  • Delegates 15

Consulte também

Conceitos

Guia de Programação C#

Referência

Palavras-chave C#

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

Representantes (guia de programação C#)

Eventos (Guia de programação do C#)

Delegados com nomeados versus métodos anônimo (guia de programação translation from VPE for Csharp)

Métodos anônimos (Guia de programação do C#)

Outros recursos

Referência C#