Qual é a finalidade de um parêntese vazio numa declaração Lambda? – c# expressões-lambda característica-linguagem

Pergunta:


Criei um exemplo de uma declaração Lambda sem argumentos, entretanto, estou com duvidas referente a omissão do parêntese vazio () na declaração.

Veja o exemplo:

class Program
{
    public delegate void MyDelegate();

    static void Main(string[] args)
    {
        MyDelegate d = () => 
                            {
                                Console.WriteLine("Ola mundo lambda! :]");
                            };
        d();

        Console.ReadKey();
    }
}

As minhas duvidas são as seguintes.

  1. Qual é a finalidade dos parênteses vazios ()?
  2. E em que ele implica na declaração?
  3. Ele assume o comportamento de uma variável?
Autor da pergunta gato

Maniero

É para indicar que a função anônima que ela representa não tem nenhum parâmetro. Foi o jeito que se arrumou para a sintaxe não ficar manca, já que sempre tem que ter alguma coisa antes do => que separa os parâmetros do corpo da da função.

Não há nada diferente além disso em relação às outras lambdas.

Em tese poderiam deixar sem, mas fica esquisito e poderia criar alguma ambiguidade no futuro, se é que já não tem e eu não percebi. Design de linguagem exige bom gosto e pensar no futuro.

Pensa na função comum, normalmente ela terias parênteses sempre, tendo um parâmetro ou não. Porque uma lambda não precisa? Ora, porque ela é uma sintaxe de conveniência, quanto menos escrever melhor (e nem é por causa da digitação, é para dar mais legibilidade mesmo, e ir direto ao ponto). Então ela evita os parenteses sempre que possível, esse não é um caso possível.

Outro caso onde eles são necessários é quando tem mais de um parâmetro. Então a conveniência fica só para um parâmetro, que é o caso mais usado.

Não precisava das chaves.

MyDelegate d = () => Console.WriteLine("Ola mundo lambda! :]");

Veja que esquisito, mas poderiam ter aceito assim:

MyDelegate d = => Console.WriteLine("Ola mundo lambda! :]");

Imagine a pessoa esquecer o espço entre os dois =.

Fonte

Deixe uma resposta

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