Resumo : neste tutorial, você aprenderá sobre métodos anônimos C#, que são métodos sem nomes.
Introdução aos métodos anônimos C#
Ao atribuir um método a um delegado , você define um método, seja um método de instância ou um método estático , e depois o atribui ao delegado. Por exemplo:
class Program
{
delegate int Transfomer(int x);
static int Square(int x)
{
return x * x;
}
public static void Main(string[] args)
{
Transfomer transform = Square;
Console.WriteLine(transform(10)); // 100
}
}
Linguagem de código: C# ( cs )
Neste exemplo:
Primeiro, declare um delegado chamado Transformer
que aceita um número inteiro e retorna um número inteiro:
delegate int Transfomer(int x);
Linguagem de código: C# ( cs )
Segundo, defina um método estático chamado Square()
com a mesma assinatura do Transformer
delegado:
static int Square(int x)
{
return x * x;
}
Linguagem de código: C# ( cs )
Terceiro, atribua o Square
método ao Transformer
delegado e invoque-o dentro do Main()
método:
Transfomer transform = Square;
Console.WriteLine(transform(10)); // 100
Linguagem de código: C# ( cs )
Às vezes, definir um novo método não é necessário porque você o usa apenas uma vez. Isso cria sobrecarga indesejada.
C# permite criar um delegado e atribuir imediatamente um bloco de código a ele. Este bloco de código pode ser um método anônimo ou uma expressão lambda .
Um método anônimo usa a delegate
palavra-chave seguida por uma declaração de parâmetro opcional e pelo corpo do método. Por exemplo:
class Program
{
delegate int Transfomer(int x);
public static void Main(string[] args)
{
Transfomer transform = delegate (int x) { return x * x; };
Console.WriteLine(transform(10)); // 100
}
}
Linguagem de código: C# ( cs )
Neste exemplo, não definimos o método estático Square
. Em vez disso, atribuímos um método anônimo ao transform
delegado.
A instrução a seguir define um método anônimo e o atribui ao Transformer
delegado:
delegate (int x) { return x * x; }
Linguagem de código: C# ( cs )
Métodos anônimos podem acessar as variáveis externas. Por exemplo:
class Program
{
delegate decimal Pricing(decimal price);
public static void Main(string[] args)
{
decimal tax = 0.08m;
decimal price = 100m;
Pricing calculateNet = delegate(decimal price) {
return price * (1 + tax);
};
Console.WriteLine(calculateNet(price));
}
}
Linguagem de código: C# ( cs )
Saída:
108
Linguagem de código: C# ( cs )
Neste exemplo, o método anônimo acessa a tax
variável do Main()
método.
A partir do C# 3, você pode usar expressões lambda em vez de métodos anônimos, que possuem sintaxe mais concisa.
Resumo
- Métodos anônimos são métodos sem nomes.
- Use a
delegate
palavra-chave para definir um método anônimo.