Fácil C#

Lambda que soma dois números

Enunciado

Crie uma expressão lambda que receba dois inteiros e retorne a soma. Atribua-a a um Func<int, int, int> e use-a para somar 3 e 4, exibindo o resultado no console.

Requisitos

  • Declarar um Func<int, int, int> chamado soma.
  • A lambda deve usar a sintaxe (a, b) => a + b.
  • Exibir o resultado de soma(3, 4) no console.

Código inicial

using System;

class Program
{
    static void Main()
    {
        // TODO: declare a lambda soma e exiba o resultado
    }
}

Saída esperada

7
Ver dica

Use Func<int, int, int> soma = (a, b) => a + b; e depois Console.WriteLine(soma(3, 4));.

Mostrar solução
using System;

class Program
{
    static void Main()
    {
        // Declara uma lambda que soma dois inteiros
        Func<int, int, int> soma = (a, b) => a + b;
        
        // Chama a lambda e exibe o resultado
        Console.WriteLine(soma(3, 4));
    }
}

Passo a passo

  1. Importamos o namespace System para usar Console.
  2. Declaramos uma variável do tipo Func<int, int, int>, que representa uma função que recebe dois inteiros e retorna um inteiro.
  3. Atribuímos a ela uma expressão lambda (a, b) => a + b, que soma os dois parâmetros.
  4. Chamamos soma(3, 4) e passamos o resultado para Console.WriteLine, que imprime 7.

Por que funciona

A lambda (a, b) => a + b é uma função anônima que corresponde à assinatura de Func<int, int, int>. O compilador infere os tipos dos parâmetros e do retorno. Ao chamar soma(3, 4), a expressão é avaliada e retorna a soma.

Erros comuns

  • Esquecer o tipo delegate: tentar var soma = (a, b) => a + b; sem contexto gera erro de compilação, pois o compilador não sabe o tipo da lambda. Use Func<int, int, int> explicitamente.
  • Parênteses desnecessários: para um único parâmetro, x => x * x é válido, mas para dois é obrigatório usar parênteses: (a, b) => ....
  • Confundir => com =: => é o operador lambda, não uma atribuição.

Outra forma de resolver

Pode-se usar um método anônimo, mas lambdas são mais concisas:

Func<int, int, int> soma = delegate(int a, int b) { return a + b; };

Prefira lambdas para código moderno.

Saída esperada

7