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>chamadosoma. - 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
- Importamos o namespace
Systempara usarConsole. - Declaramos uma variável do tipo
Func<int, int, int>, que representa uma função que recebe dois inteiros e retorna um inteiro. - Atribuímos a ela uma expressão lambda
(a, b) => a + b, que soma os dois parâmetros. - Chamamos
soma(3, 4)e passamos o resultado paraConsole.WriteLine, que imprime7.
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. UseFunc<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