Métodos Anônimos C#

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 Transformerque 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 Transformerdelegado:

static int Square(int x)
{
    return x * x;
}Linguagem de código:  C#  ( cs )

Terceiro, atribua o Squaremétodo ao Transformerdelegado e invoque-o dentro do Main()método:

Transfomer transform = Square;
Console.WriteLine(transform(10)); // 100Linguagem 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 delegatepalavra-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 transformdelegado.

A instrução a seguir define um método anônimo e o atribui ao Transformerdelegado:

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:

108Linguagem de código:  C#  ( cs )

Neste exemplo, o método anônimo acessa a taxvariá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 delegatepalavra-chave para definir um método anônimo.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *