Cómo usar expresiones lambda en C #

Las expresiones Lambda se introdujeron por primera vez en .NET 3.5, al mismo tiempo que se puso a disposición Language Integrated Query (LINQ). Las expresiones lambda son como métodos anónimos pero con mucha más flexibilidad. Cuando se usa una expresión lambda, no es necesario especificar el tipo de entrada. Por lo tanto, una expresión lambda proporciona una forma más corta y limpia de representar métodos anónimos.

En este artículo, veremos cómo podemos usar expresiones lambda en C #. Para trabajar con los ejemplos de código proporcionados en este artículo, debe tener Visual Studio 2019 instalado en su sistema. Si aún no tiene una copia, puede descargar Visual Studio 2019 aquí. 

Crear un proyecto de aplicación de consola en Visual Studio

En primer lugar, creemos un proyecto de aplicación de consola .NET Core en Visual Studio. Suponiendo que Visual Studio 2019 esté instalado en su sistema, siga los pasos que se describen a continuación para crear un nuevo proyecto de aplicación de consola .NET Core en Visual Studio.

  1. Inicie el IDE de Visual Studio.
  2. Haga clic en "Crear nuevo proyecto".
  3. En la ventana "Crear nuevo proyecto", seleccione "Aplicación de consola (.NET Core)" en la lista de plantillas que se muestran.
  4. Haga clic en Siguiente. 
  5. En la ventana "Configure su nuevo proyecto" que se muestra a continuación, especifique el nombre y la ubicación del nuevo proyecto.
  6. Haga clic en Crear.

Seguir estos pasos debería resultar en un nuevo proyecto de aplicación de consola .NET Core en Visual Studio 2019. Usaremos este proyecto para trabajar con expresiones lambda de C # en las secciones siguientes de este artículo.

Anatomía de una expresión Lambda

Básicamente, una expresión lambda es un método que no tiene una declaración. En otras palabras, una expresión lambda es un método que no tiene un especificador de acceso ni un nombre. Una expresión lambda se puede dividir en dos secciones: la parte izquierda y la parte derecha. La parte izquierda se usa para la entrada y la parte derecha se usa para escribir expresiones.

Aquí está la sintaxis para usar expresiones lambda en C #.

(Parámetros de entrada) => Bloque de expresión o declaración

Puede tener dos tipos de expresiones lambda, una expresión lambda y una declaración lambda. Una expresión lambda se compone de una entrada en el lado izquierdo y una expresión en el lado derecho, como se muestra a continuación.

input => expresión;

Una lambda de declaración se compone de una entrada en el lado izquierdo y un conjunto de declaraciones en el lado derecho, como se muestra a continuación.

input => {declaraciones};

Ejemplos de expresiones lambda en C #

Escribir una expresión lambda es simple: solo necesita eliminar la palabra clave delegada y el tipo de parámetro de un método anónimo. Considere el siguiente método anónimo que usa la palabra clave delegado así como un tipo de parámetro.

delegado (Autor a) {return a.IsActive && a.NoOfBooksAuthored> 10; }

La declaración anterior se puede convertir en una expresión lambda como se muestra en el fragmento de código que se muestra a continuación.

(a) => {a.IsActive && a.NoOfBooksAuthored> 10; }

En la declaración anterior aestá el parámetro y =>es el operador lambda. La siguiente declaración es la expresión.

a.IsActive && a.NoOfBooksAuthored> 10;

Aquí hay otro ejemplo de una expresión lambda que muestra los números impares entre 1 y 9 en la ventana de la consola.

Lista de enteros = nueva Lista {1, 2, 3, 4, 5, 6, 7, 8, 9};

foreach (int num en enteros.Where (n => n% 2 == 1) .ToList ())

{

  Console.WriteLine (num);

}

Expresiones lambda con y sin parámetros

Las expresiones lambda pueden no tener parámetros o tener uno o más parámetros. El siguiente fragmento de código ilustra una expresión lambda que no tiene ningún parámetro.

() => Console.WriteLine ("Esta es una expresión lambda sin ningún parámetro");

Las expresiones lambda también pueden tener uno o más parámetros. El siguiente fragmento de código ilustra cómo puede pasar un parámetro a una expresión lambda.

(a, numberOfBooksAuthored) => a.NoOfBooksAuthored> = numberOfBooksAuthored;

También puede especificar el tipo de parámetro en una expresión lambda, como se muestra en el fragmento de código que se muestra a continuación.

(a, int numberOfBooksAuthored) => a.NoOfBooksAuthored> = numberOfBooksAuthored;

Incluso puede especificar varias declaraciones en una expresión lambda utilizando llaves. Esto se muestra en el siguiente fragmento de código. 

(a, 10) =>

{

   Console.WriteLine ("Este es un ejemplo de una expresión lambda

                      con múltiples declaraciones ");

   return a.NoOfBooksAuthored> = 10;

}

Lambdas de declaración en C #

Una instrucción lambda usa una sintaxis idéntica a la expresión lambdas. La diferencia es que, en lugar de tener una expresión a la derecha del operador, la instrucción lambda tiene un bloque de código que incluye una o más declaraciones.

El siguiente fragmento de código ilustra cómo puede aprovechar una lambda de declaración para mostrar los números pares entre 1 y 9 en la ventana de la consola.

int [] enteros = nuevo [] {1, 2, 3, 4, 5, 6, 7, 8, 9};

foreach (int i en enteros. Donde (x =>

{

   si (x% 2 == 0)

         devuelve verdadero;

    falso retorno;

 }

 ))

Console.WriteLine (i);

Las expresiones Lambda son una gran característica en .NET y .NET Core que proporcionan una forma más corta de representar métodos anónimos. Las expresiones lambda pueden tener cero parámetros o uno o más. Incluso puede asignar expresiones lambda a delegados Func, Action o Predicate. En un artículo futuro aquí, exploraremos estas y otras características de las expresiones lambda. También exploraremos cómo podemos trabajar con expresiones lambda y LINQ, así como con lambdas asíncronas.

Cómo hacer más en C #:

  • Cuándo usar una clase abstracta frente a una interfaz en C #
  • Cómo trabajar con AutoMapper en C #
  • Cómo usar expresiones lambda en C #
  • Cómo trabajar con delegados Action, Func y Predicate en C #
  • Cómo trabajar con delegados en C #
  • Cómo implementar un registrador simple en C #
  • Cómo trabajar con atributos en C #
  • Cómo trabajar con log4net en C #
  • Cómo implementar el patrón de diseño del repositorio en C #
  • Cómo trabajar con la reflexión en C #
  • Cómo trabajar con filesystemwatcher en C #
  • Cómo realizar la inicialización diferida en C #
  • Cómo trabajar con MSMQ en C #
  • Cómo trabajar con métodos de extensión en C #
  • Cómo usar expresiones lambda en C #
  • Cuándo usar la palabra clave volátil en C #
  • Cómo usar la palabra clave yield en C #
  • Cómo implementar polimorfismo en C #
  • Cómo construir su propio programador de tareas en C #
  • Cómo trabajar con RabbitMQ en C #
  • Cómo trabajar con una tupla en C #
  • Explorando métodos virtuales y abstractos en C #