Expresiones lambda en miembros de función de C# 6 - Code Variables -->
Code Variables Code Variables

Latest news

جاري التحميل ...

Expresiones lambda en miembros de función de C# 6

imageSeguimos hablando de las novedades de C# 6, y en esta ocasión nos centraremos en una interesante característica cuyo nombre, sinceramente, no estoy seguro de ser capaz de traducir de forma correcta del original “Expression bodied function members”. Quizás sería algo así como “expresiones en cuerpo de miembros de función”, pero bueno, lo importante no es el nombre sino el concepto, así que vamos a centrarnos en él.

Comencemos desde el principio. Los miembros de función son aquellos miembros de un tipo que contienen código ejecutable, como métodos, propiedades, indexadores, operadores y otros. En general, todos ellos permiten implementar su comportamiento mediante la introducción de un bloque de código, tradicionalmente enmarcado entre llaves.

Pues bien, esta novedad del lenguaje permite sustituir el cuerpo de miembros de función por una concisa expresión lambda, logrando simplificar bastante el código y acelerando su creación.

Pero veámoslo con un ejemplo. Observad la siguiente clase, y más concretamente la cantidad de caracteres necesarios para implementar su propiedad de sólo lectura FullName en C# tradicional:



A partir de C# 6, podremos dejarla así de limpita:



Genial, ¿verdad? De un plumazo hemos eliminado muchísimo ruido de nuestro código, mejorando la legibilidad y evitando gran cantidad de golpes de tecla. Observad que incluso hemos eliminado el bloque get, implícito cuando usamos la sintaxis lambda en una propiedad.

Aunque la lambda del ejemplo anterior es simplemente una expresión de concatenación, al codificarla podríamos usar cualquier tipo de expresión, y desde ella tendremos acceso a cualquier miembro que también tuviéramos disponible al usar la sintaxis tradicional, como sus demás miembros de instancia o estáticos, privados o públicos.

De nuevo volviendo al ejemplo anterior, hemos mostrado cómo reescribir una propiedad, pero por supuesto podemos hacer lo mismo con métodos. Esto será especialmente interesante para simplificar aquellos cuyo cuerpo sólo tengamos una línea con un return; como muestra, fijaos que controladores MVC más bonitos podríamos escribir en escenarios simples:

image

Bueno, y como podréis imaginar también podemos usar esta sintaxis con métodos estáticos:



Quizás la única precaución que hay que tener en cuenta es que en el caso de miembros de función que retornan void también podemos utilizar las lambdas, aunque en su interior sólo podremos usar expresiones sin retorno, al igual que ocurre con las lambdas tradicionales:



También los operadores personalizados o implícitos son buenos candidatos a utilizar esta sintaxis reducida, puesto que su cuerpo  consiste muy a menudo en una simple expresión de evaluación directa:



Asimismo, otro buen sitio para utilizarlo sería en los miembros indexadores:



Aunque pueda parecer obvio, un último detalle que creo interesante resaltar es que estas expresiones, a diferencia de las lambda tradicionales, no pueden tener cuerpo, es decir, no podemos usar llaves e incluir en su interior varias instrucciones. La verdad es que esto tiene bastante sentido porque en caso de necesitar un cuerpo ya tenemos la sintaxis anterior; esta nueva fórmula viene a ayudarnos cuando el cuerpo de un miembro de función es una simple expresión de evaluación directa.



En definitiva, de nuevo se trata de una mejora del lenguaje nada espectacular, pero sin duda interesante vistas a simplificar código y evitar pulsaciones de teclas innecesarias. En mi opinión será bien recibida y pronto tendrá bastantes adeptos.

Y por último, recordaros los posts anteriores de la serie por si queréis conocer otras novedades que acompañarán a C# 6:
Publicado en Variable not found.

Comments



If you like the content of our blog, we hope to stay in constant communication, just enter your email to subscribe to the blog's express mail to receive new blog updates, and you can send a message by clicking on the button next ...

إتصل بنا

About the site

author Code Variables  Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

Learn more ←

Blog visitors

Blog stats

All Copyrights Reserved

Code Variables

2019