- Autor
- Nome
- Nelson Silva
- Social
Introdução
As expressões lambda tornaram-se uma ferramenta indispensável para os programadores C#. Elas proporcionam uma escrita concisa, flexibilidade e a capacidade de criar funções on-the-fly.
- Origens das Expressões Lambda
- Sintaxe do Lambda em C#
- Benefícios do Uso de Lambda em C#
- Relação com Delegates, Func e Action
- LINQ e Expressões Lambda
- Casos de Uso Comuns
Origens das Expressões Lambda
Originando-se do cálculo lambda, uma estrutura formal na teoria da computação, as funções lambda são agora um pilar em várias linguagens de programação modernas. C# incorporou essa funcionalidade, permitindo que os programadores aproveitassem os benefícios das funções anónimas.
Sintaxe do Lambda em C#
A expressão lambda em C# utiliza o operador =>
. À esquerda deste operador, especificamos os parâmetros e à direita, a expressão ou o bloco de código.
(param1, param2) => param1 * param2;
using System;
using System.Linq;
namespace Base {
class Lambda {
private int[] numeros = new int[] {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
};
public void Run() {
Console.WriteLine($"Total de números pares: {numeros.Count(numero => numero % 2 == 0)}");
Console.WriteLine($"Total de números ímpares: {numeros.Count(numero => numero % 2 != 0)}");
}
private int ContarNumerosPares() {
var contador = 0;
foreach (var numero in numeros) {
if (numero % 2 == 0)
contador++;
}
return contador;
}
private int ContarNumerosImpares() {
var contador = 0;
foreach (var numero in numeros) {
if (numero % 2 != 0)
contador++;
}
return contador;
}
}
}
Benefícios do Uso de Lambda em C#
- Concisão: Reduz a necessidade de escrever métodos completos, tornando o código mais limpo.
- Flexibilidade: Facilmente usadas como argumentos ou retornadas como valores.
- Leitura Facilitada: O código torna-se mais expressivo e legível.
Relação com Delegates, Func e Action
- Delegates: São tipos de referência que podem referenciar qualquer método com o mesmo conjunto de parâmetros e retorno. As expressões lambda frequentemente se associam a delegates.
- Func: É um delegate que pode ter zero ou mais parâmetros e retorna um valor. A última especificação de tipo é sempre o tipo de retorno.
- Action: Semelhante ao Func, mas não retorna valor (void).
LINQ e Expressões Lambda
O LINQ (Language-Integrated Query) é um conjunto de extensões de métodos que permite a execução de consultas complexas em coleções. O LINQ usa expressões lambda extensivamente, tornando a consulta de dados em coleções, bancos de dados e XML muito mais simples e intuitiva.
var pares = numeros.Where(numero => numero % 2 == 0);
Casos de Uso Comuns
- Manipulação de Coleções: Filtrar, ordenar, transformar coleções.
- Eventos e Delegates: Substituir métodos anónimos por expressões lambda.
- Asynchronous Programming: Usar expressões lambda com
Task.Run()
ouasync
eawait
.
Conclusão
A capacidade de usar expressões lambda em C# permite que os programadores escrevam código mais limpo, eficiente e expressivo. Ao entender sua origem, sintaxe e benefícios, pode-se realmente começar a tirar o máximo proveito desta poderosa característica.