Métodos Anônimos em C#: Simplificando o Uso de Delegates
Discutimos que delegates são usados para referenciar quaisquer métodos que tenham a mesma assinatura do delegate. Em outras palavras, você pode chamar um método que pode ser referenciado por um delegate usando esse objeto delegate.
Métodos anônimos fornecem uma técnica para passar um bloco de código como parâmetro de delegate. Métodos anônimos são métodos sem nome, apenas o corpo.
Você não precisa especificar o tipo de retorno em um método anônimo; ele é inferido a partir da instrução return dentro do corpo do método.
Escrevendo um Método Anônimo
Métodos anônimos são declarados com a criação da instância do delegate, com a palavra-chave delegate. Por exemplo:
delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x) {
Console.WriteLine("Método Anônimo: {0}", x);
};
O bloco de código Console.WriteLine("Método Anônimo: {0}", x); é o corpo do método anônimo.
O delegate pode ser chamado tanto com métodos anônimos quanto com métodos nomeados da mesma forma, ou seja, passando os parâmetros do método para o objeto delegate.
Por exemplo:
nc(10);
Exemplo
O exemplo a seguir demonstra o conceito:
Demo ao Vivousing System;
delegate void NumberChanger(int n);
namespace DelegateAppl {
class TestDelegate {
static int num = 10;
public static void AddNum(int p) {
num += p;
Console.WriteLine("Método Nomeado: {0}", num);
}
public static void MultNum(int q) {
num *= q;
Console.WriteLine("Método Nomeado: {0}", num);
}
public static int getNum() {
return num;
}
static void Main(string[] args) {
//cria instâncias do delegate usando método anônimo
NumberChanger nc = delegate(int x) {
Console.WriteLine("Método Anônimo: {0}", x);
};
//chamando o delegate usando o método anônimo
nc(10);
//instanciando o delegate usando métodos nomeados
nc = new NumberChanger(AddNum);
//chamando o delegate usando métodos nomeados
nc(5);
//instanciando o delegate usando outro método nomeado
nc = new NumberChanger(MultNum);
//chamando o delegate usando métodos nomeados
nc(2);
Console.ReadKey();
}
}
}
Quando o código acima é compilado e executado, produz o seguinte resultado:
Método Anônimo: 10 Método Nomeado: 15 Método Nomeado: 30
Linguagem C
- Dominando Classes e Métodos Abstratos em C#: Guia Prático
- Entendendo Classes e Métodos Parciais em C#
- Dominando Classes e Métodos Sealed em C#: Quando Usar, Exemplos Claros e Segurança de Código
- Dominando Sobrecarga de Métodos em C#: Conceitos, Exemplos e Boas Práticas
- Funções Lambda em Python: Guia Prático para Funções Anônimas
- Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
- Java 8 Default Methods Explicados: Aprimorando Interfaces e Compatibilidade Reversa
- Métodos em C#: Definindo, Chamando e Usando Funções
- Entendendo Delegates em C#: Guia de Referências de Funções e Eventos
- Método 21 da EPA: Protocolo Abrangente de Detecção e Reparo de Vazamentos