English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Como o próprio nome sugere, métodos anônimos são métodos sem nome. Você pode definir métodos anônimos em C# usando a palavra-chave delegate e pode atribuí-los a variáveis do tipo delegate.
Em um método anônimo, você não precisa especificar o tipo de retorno, ele é inferido a partir da instrução return dentro do corpo do método.
public delegate void Print(int value); static void Main(string[] args) { Print prnt = delegate(int val) { Console.WriteLine("Dentro do método anônimo. Valor: {0}", val); } print(100); }
Dentro do método anônimo. Valor:100
O método anônimo pode acessar variáveis definidas em função externa.
public delegate void Print(int value); static void Main(string[] args) { int i = 10; Print prnt = delegate(int val) { val += i; Console.WriteLine("Método anônimo: {0}", val); } prnt(100); }
Método anônimo:110
Também é possível passar métodos anônimos para métodos que aceitam delegados como parâmetros.
No exemplo a seguir, PrintHelperMethod() usa o primeiro parâmetro Print delegado:
public delegate void Print(int value); class Program { public static void PrintHelperMethod(Print printDel, int val) { val += 10; printDel(val); } static void Main(string[] args) { PrintHelperMethod(delegate(int val) { Console.WriteLine("Método anônimo: {0}", val); }, 100); } }
Método anônimo:110
saveButton.Click += delegate(Object o, EventArgs e) { System.Windows.Forms.MessageBox.Show("Salvo com Sucesso!"); }
C#3A versão .0 introduziu expressões lambda, que funcionam como métodos anônimos.
Não pode conter instruções de saltos, como goto, break ou continue.
Não pode acessar parâmetros ref ou out de métodos externos.
Não pode possuir ou acessar código inseguro.
Não pode ser usado no lado esquerdo do operador is.
Métodos anônimos podem ser definidos usando a palavra-chave delegate
Métodos anônimos devem ser atribuídos a delegados.
Métodos anônimos podem acessar variáveis ou funções externas.
Métodos anônimos podem ser passados como parâmetros.
Métodos anônimos podem ser usados como manipuladores de eventos.