Lambdas en C#
Una vez que conocemos lo que es un delegado, y lo que son Func y Action, es momento de llegar a un tema que se convierte en algo muy sencillo, además es de mis cosas favoritas en C#: Las expresiones lambda. Comenzaré por dar un ejemplo de su uso:
Es decir, suponiendo que tenemos el método del ejemplo pasado.
Para el que escribimos un método para usarlo como filtro:
En realidad, no es necesario escribir tanto, el método SoloConU
, puede ser reemplazado en el código por:
Por definición, las expresiones lambda son “métodos anónimos para crear tipos delegados y árboles de expresión”, nos enfocaremos en lo primero. El método SoloConU
es usado solamente una vez en nuestro programa y es por eso que es un buen candidato a ser reemplazado por un método anónimo (entre otras cosas, sin nombre). Y es que podría muchas veces resultarnos bastante engorroso tener que escribir le método completo para hacer referencia a él solamente una vez dentro de todo nuestro código.
Crear una expresión lambda
Me gusta imaginar la creación de expresiones lambda como una especie de recorte de los métodos tradicionales, y es que lo podemos ver como una serie de pasos que funcionan tanto para métodos con tipo de dato de retorno o para los que no lo tienen:
- Quitamos todo lo que esté antes del primer paréntesis de apertura
- Agregamos el operador
=>
- ... listo
Consideraciones extras
Existen otras consideraciones que podemos tomar en cuenta si queremos reducir aún más la cantidad de código escrito. Por ejemplo si a la expresión lambda recibe un solo parámetro se pueden omitir los paréntesis:
Si la expresión lambda consta de una única sentencia, y esta es una operación de retorno, podemos omitir los corchetes, la palabra clave return
y el ;
de fin de sentencia:
Usos más frecuentes
De los usos más frecuentes de las expresiones lambda, podemos encontrar la asignación de manejadores de evento y en conjunto con Linq. Herramientas de las que les hablaré más adelante.
Este es el fin de la serie de posts que comenzó con delegados en C# continuando con func y action en C#. Hay otro tema en el tintero, que son los árboles de expresiones, pero aún está en preparación.