CSharp

Tutorial CSharp: Lambdas

CSharp lambdas: funciones anónimas. Domina el uso de funciones lambda en CSharp mediante ejemplos prácticos y detallados.

En C#, las expresiones Lambda son una forma de definir funciones anónimas, es decir, funciones que no tienen un nombre explícito. Es un concepto introducido con la versión 3.0 de C# y que forma parte integral de la programación funcional.

Las expresiones Lambda se utilizan principalmente para definir código de forma concisa. Dado que son funciones anónimas, se pueden utilizar en cualquier lugar donde se esperen delegados o expresiones de árbol de expresiones. Por lo tanto, son especialmente útiles para escribir consultas LINQ y para pasar a métodos que esperan delegados.

Sintaxis de las expresiones Lambda

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

(parámetros) => expresión

Donde:

  • parámetros: son los parámetros de entrada para la función Lambda.
  • =>: es el operador Lambda, que se lee como "va a".
  • expresión: es el cuerpo de la función Lambda.

Por ejemplo, supóngase que se tiene una lista de números y se quiere encontrar todos los números pares en la lista. Puede usarse una expresión Lambda para definir la condición de filtrado:

List<int> numeros = new List<int> { 1, 2, 3, 4, 5, 6 };
List<int> pares = numeros.FindAll(x => x % 2 == 0);

En C#, FindAll es un método de extensión que permite filtrar elementos según un predicado específico. En este caso, se le pasa la expresión Lambda x => x % 2 == 0 toma un parámetro x y devuelve true si x es par y false si no lo es. La función FindAll aplica esta expresión a cada elemento de la lista y devuelve una nueva lista con todos los elementos que cumplen con la condición.

Expresiones Lambda con múltiples parámetros

Las expresiones Lambda también pueden tomar múltiples parámetros. Por ejemplo, si se quiere ordenar una lista de números en orden descendente, podría usarse la siguiente expresión Lambda:

List<int> numeros = new List<int> { 1, 2, 3, 4, 5, 6 };
numeros.Sort((x, y) => y.CompareTo(x));

Aquí, la expresión Lambda (x, y) => y.CompareTo(x) toma dos parámetros, x e y, y compara y con x. Si y es mayor que x, devuelve un número positivo; si y es igual a x, devuelve 0; y si y es menor que x, devuelve un número negativo.

Expresiones Lambda con cuerpo de función

Las expresiones Lambda pueden contener también múltiples declaraciones en un cuerpo de función, en lugar de una sola expresión. En este caso, el cuerpo de la función debe estar entre llaves {} y debe terminar con una declaración return. Por ejemplo:

Func<int, int, int> sumar = (x, y) => 
{
    int resultado = x + y;
    return resultado;
};

int suma = sumar(3, 4);  // suma es 7

En este caso, la expresión Lambda (x, y) => { int resultado = x + y; return resultado; } define una función que toma dos parámetros x e y, suma x e y y devuelve el resultado.

Conclusión

Las expresiones Lambda en C# son una herramienta muy poderosa que permite escribir código más conciso y flexible. Son esenciales para la programación funcional y se utilizan ampliamente en muchos aspectos de C#, como las consultas LINQ, la programación asíncrona y paralela, y los delegados y eventos.

Certifícate en CSharp con CertiDevs PLUS

Ejercicios de esta lección Lambdas

Evalúa tus conocimientos de esta lección Lambdas con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de CSharp

Accede a todas las lecciones de CSharp y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

En esta lección

Objetivos de aprendizaje de esta lección

  1. Comprender qué son las expresiones Lambda en C# y cómo se diferencian de las funciones tradicionales.
  2. Aprender la sintaxis básica de las expresiones Lambda, incluyendo los parámetros y el cuerpo de la función.
  3. Conocer cómo utilizar las expresiones Lambda en consultas LINQ para filtrar, ordenar y proyectar datos.
  4. Familiarizarse con el uso de expresiones Lambda en contextos de delegados y eventos para definir acciones y notificaciones.
  5. Entender que las expresiones Lambda son esenciales en la programación funcional en C# y permiten escribir código más conciso y flexible.