Representantes (guia de programação do C#)
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 invocar (ou ligue) o método através da instância do delegado.
Delegados são usados para passar os 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ê criar um método personalizado e uma classe como 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.Desde que você sabe que a assinatura do delegado, você pode atribuir seu próprio método.
Observaçã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, uma referência a um método que compara dois objetos pode ser passada como um argumento para um algoritmo de classificação.Como o código de comparação está em um procedimento separado, o algoritmo de classificação pode ser gravado de 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.
Não tem métodos de uma correspondência exata de assinatura do delegado.Para obter mais informações, consulte O uso de variação em 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 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 do C#).
Nesta seção
Quando usar delega em vez de Interfaces (guia de programação C#)
Representantes com nome vs. Métodos anônimos (guia de programação do C#)
Como: combinar representantes (representantes Multicast) (guia de programação C#)
Como: declarar, instanciar e usar um delegado (guia de programação do C#)
Especificação da linguagem 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#.
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
Eventos (guia de programação do C#)