Expresiones lambda
Las expresiones lambda en C# proporcionan una forma concisa de escribir funciones anónimas. Pueden utilizarse en lugar de métodos anónimos cuando necesitas pasar funciones como argumentos a métodos, como en el caso de LINQ o el manejo de eventos. Las expresiones lambda también son útiles cuando necesitas definir funciones de forma rápida y compacta.
Aquí tienes una descripción detallada de las expresiones lambda, junto con ejemplos de sus diversas formas:
Sintaxis Básica:
La sintaxis básica de una expresión lambda es la siguiente:
(parametros) => expresion
parametros
: Los parámetros de la función.expresion
: La expresión que representa el cuerpo de la función.
Ejemplos de Expresiones Lambda:
Ejemplo 1: Expresión Lambda Simple
Func<int, int, int> suma = (a, b) => a + b;
Console.WriteLine(suma(3, 4)); // Salida: 7
En este ejemplo, suma
es un delegado que representa una función que toma dos enteros y devuelve la suma de ellos. La expresión lambda (a, b) => a + b
representa la implementación de esa función.
Ejemplo 2: Expresión Lambda en LINQ
List<int> numeros = new List<int> { 1, 2, 3, 4, 5 };
var pares = numeros.Where(n => n % 2 == 0);
Console.WriteLine(string.Join(", ", pares)); // Salida: 2, 4
Aquí, la expresión lambda n => n % 2 == 0
se utiliza como un predicado en el método Where
de LINQ para seleccionar los números pares de la lista.
Ejemplo 3: Expresión Lambda con Múltiples Líneas
Action<int> imprimirCuadrado = n =>
{
int cuadrado = n * n;
Console.WriteLine($"El cuadrado de {n} es {cuadrado}");
};
imprimirCuadrado(5);
En este caso, la expresión lambda se extiende a múltiples líneas. Puedes usar llaves {}
para definir un bloque de código si la expresión lambda es más compleja.
Ejemplo 4: Expresión Lambda con Parámetros de Tipo Implícito
Func<int, int, int> multiplicar = (a, b) => a * b;
Console.WriteLine(multiplicar(3, 4)); // Salida: 12
En este ejemplo, no se especifican los tipos de los parámetros a
y b
, ya que el compilador puede inferirlos automáticamente.
Ejemplo 5: Expresión Lambda con Parámetro Sin Uso
Action<string> saludar = _ => Console.WriteLine("¡Hola!");
saludar("Ignorado"); // Salida: ¡Hola!
Si no necesitas usar un parámetro en tu expresión lambda, puedes utilizar el guion bajo _
para indicar que está siendo ignorado.
Ejemplo 6: Expresión Lambda con Función de Cierre
Func<int, Func<int, int>> sumaParcial = a =>
{
return b => a + b;
};
var suma5 = sumaParcial(5);
Console.WriteLine(suma5(3)); // Salida: 8
En este ejemplo, la expresión lambda a => b => a + b
representa una función que toma un argumento a
y devuelve otra función que toma un argumento b
y realiza la suma.
https://www.programiz.com/csharp-programming/lambda-expression