csharp-funciones-lambda

Qué son y cómo usar las funciones lambda

Una función lambda en C# es una sintaxis concisa para definir una función anónima que se puede definir en línea sin necesidad de nombrarla formalmente.

Estas funciones son útiles para escribir código de manera más compacta y legible. Es especialmente útil en situaciones donde necesitas definir una función simple, que vas a usar una única vez (como en operaciones de filtrado, mapeo o reducción de colecciones).

Sintaxis de las funciones lambda

La sintaxis básica de una función lambda en C# es la siguiente:

(parametros) => expresion
  • Parámetros: Son los parámetros de entrada de la función lambda, separados por comas si hay más de uno.
  • Expresión: Es la expresión que se evalúa y devuelve como resultado de la función lambda.

Ejemplo Básico

Vamos a verlo con un ejemplo. La siguiente función lambda que suma dos números:

var sumar = (x, y) => x + y;

Console.WriteLine(sumar(5, 3)); // Output: 8

Aquí tenemos,

  • La función lambda toma dos parámetros x e y
  • Devuelve su suma como resultado.

Ejemplos prácticos

En expresiones LINQ

Las funciones lambda son comúnmente utilizadas en expresiones LINQ para realizar operaciones de consulta en colecciones de datos.

Por ejemplo para filtrar una colección,

var numeros = new List<int> { 1, 2, 3, 4, 5 };

var pares = numeros.Where(num => num % 2 == 0);

Transformar una colección,

var nombres = new List<string> { "Luis", "María", "Pedro" };

var mesanjes = nombres.Select(nombre => $"¡Hola, {nombre}!");

En general, para la mayoría de expresiones empleadas en LINQ.

Delegados

Las funciones lambda se pueden asignar a variables de tipo delegado para pasarlas como argumentos a otras funciones o métodos.

var imprimirMensaje = mensaje => Console.WriteLine(mensaje);

imprimirMensaje("¡Hola desde una función lambda!");

Eventos

Las funciones lambda son útiles para suscribirse a eventos de una manera más concisa y expresiva.

Button boton = new Button();

boton.Click += (sender, e) => Console.WriteLine("Botón clickeado");