Delegates (C# Programming Guide)

A delegar é um tipo que define uma assinatura de método. Quando você criar uma instância de um representante, você pode associar sua instância com qualquer método com uma assinatura compatível. Você pode chamar (ou ligue) o método através da instância do delegado.

Delegados são usados para passar de métodos como argumentos para outros métodos. Manipuladores de eventos são nada mais do que os métodos que são chamados por meio de representantes. Você cria um método personalizado e uma classe como, por exemplo, um controle do windows pode chamar seu método quando um determinado evento ocorre. O exemplo a seguir mostra uma declaração delegate:

    public delegate int PerformCalculation(int x, int y);

Qualquer método de qualquer classe acessível ou struct que corresponde a assinatura do delegado, que consiste o tipo de retorno e parâmetros, pode ser atribuído ao delegado. O método pode ser estático ou um método de instância. Isso torna possível alterar programaticamente as chamadas de método e também conecte novo código classes existentes. Como você sabe que a assinatura do delegado, você pode atribuir seu próprio método.

ObservaçãoObservação

No contexto da sobrecarga de método, a assinatura de um método não inclui o valor de retorno. Mas no contexto de delegados, a assinatura incluir o valor de retorno. Em outras palavras, um método deve ter o mesmo valor de retorno com delegate.

Essa capacidade para se referir a um método como um parâmetro torna o delegate ideal para definir métodos de callback. Por exemplo, um algoritmo de classificação pode passar uma referência para o método que compara dois objetos. A separação do código de comparação permite que o algoritmo seja gravados em uma forma mais geral.

Visão geral Delegates

Delegates possuem as seguintes propriedades:

  • Delegados são como ponteiros de função do C++, mas são de tipo seguro.

  • Delegates permitem métodos para serem passados como parâmetros.

  • Delegates podem ser usados para definir métodos callback.

  • Delegates podem ser encadeados; por exemplo, vários métodos podem ser chamados em um único evento.

  • Métodos não precisam coincidir exatamente de assinatura do delegado. Para obter mais informações, consulte Usando a variação delegados (C# e Visual Basic).

  • C# versão 2.0 introduziu o conceito de Métodos anônimos, que permitem que os blocos de código ser passados como parâmetros no lugar de um método definido separadamente. C# 3.0 introduziu as expressões lambda como uma forma mais concisa de gravar blocos de código embutido. Os métodos anônimos e as expressões lambda (em determinados contextos) são compiladas para delegar tipos. Juntos, esses recursos agora são conhecidos como funções anônimas. Para obter mais informações sobre expressões lambda, consulte Funções anônimas (guia de programação de C#).

Nesta seção

Especificação da linguagem C#

Para obter mais informações, consulte C# Language Specification A especificação de linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Capítulos de livros em destaque

Delegates, Events, and Lambda ExpressionsemC# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmers

Delegates and EventsemLearning C# 3.0: Master the fundamentals of C# 3.0

Consulte também

Referência

Events (C# Programming Guide)

Delegate

Conceitos

C# Programming Guide