English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Método anônimo

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);
}
Saída:
Dentro do método anônimo. Valor:100

Método anônimo acessa variáveis definidas em função externa

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);
}
Saída:
Método anônimo:110

Método anônimo como parâmetro

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);
    }
}
Saída:
Método anônimo:110

O método anônimo pode ser usado como manipulador de eventos

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.

Limitações dos 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.

 Pontos a serem lembrados

  1. Métodos anônimos podem ser definidos usando a palavra-chave delegate

  2. Métodos anônimos devem ser atribuídos a delegados.

  3. Métodos anônimos podem acessar variáveis ou funções externas.

  4. Métodos anônimos podem ser passados como parâmetros.

  5. Métodos anônimos podem ser usados como manipuladores de eventos.