El operador nameof de C# 6 - Code Variables -->
Code Variables Code Variables

Latest news

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

El operador nameof de C# 6

imageCuando los lenguajes evolucionan, no todas las novedades son espectaculares ni revolucionan la forma de escribir nuestro código. A veces la cosa va simplemente de añadir pequeños detalles que nos hacen la vida más fácil y ayudan a evitar errores.

Y hoy hablaremos de uno de ellos: el nuevo operador nameof, que acompañará a C# a partir de su versión 6.

Imaginad un escenario que podría ser bastante frecuente, como el siguiente:



Observad que mediante el uso de las constantes "firstString"  y "secondString" estamos introduciendo una dependencia en nuestro código entre dos elementos que viven en mundos diferentes, como son el nombre de una variable a nivel de código y la cadena que representa el nombre de dicho parámetro en tiempo de ejecución.

El problema que tiene esto es que si más adelante decidimos refactorizar y modificar el nombre de los parámetros, muy probablemente olvidaremos modificar estas cadenas de texto, por lo que la excepción no mostrará información correcta sobre el error.

Para solucionar este escenario, C# 6 incluirá el operador nameof que, como se puede intuir, nos ayudará a conocer en tiempo de ejecución el nombre de una variable o miembro tal y como ha sido definida en la codificación. El ejemplo más sencillo que podemos ver es el siguiente:



¡Voila! Como sabréis, conseguir algo similar sin un operador como el que nos regala la nueva versión de C# sería bastante más complejo y farragoso. El operador nameof simplemente retornará en forma de cadena de texto el nombre de la variable que le indiquemos.

Volviendo al primer ejemplo, ahora podemos escribir el mismo método, pero asegurando que la información de ayuda de la excepción siempre incluirá el valor correcto, a prueba de refactorizaciones:



Pero no sólo de variables locales y parámetros se alimenta el operador nameof ;-) En realidad  podemos pasarle casi cualquier cosa, y su comportamiento será siempre el esperado:



Aunque hay otros usos que no son tan intuitivos. Por ejemplo, para referenciar miembros de instancia hay que hacerlo como si fueran miembros estáticos de la clase donde residen:



Además de para facilitar el trazado de errores, hay muchos otros escenarios en los que este nuevo operador podría ayudarnos a cometer menos errores. Así a bote pronto, se me ocurre que en MVC podría ser una vía sencilla para evitar las constantes de cadena si quisiéramos añadir errores al ModelState de un controlador (cosa que, por otra parte, no es especialmente recomendable):



También sería de utilidad, por ejemplo, si quisiéramos implementar un interfaz  INotifyPropertyChanged o cualquier otro que requiera conocer el nombre del miembro actual. De nuevo, simplemente haciendo uso de nameof podremos averiguar con facilidad el nombre de la propiedad que cambió para pasarlo al evento oportuno.

En definitiva, una pequeña incorporación al lenguaje que puede resultar utilísima en esos escenarios en los que debemos referenciar mediante una cadena de texto el nombre de elementos definidos a nivel de código.

Por último, recordaros que C# 6 traerá muchas otras novedades. Si queréis conocerlas, no os perdáis los posts anteriores de la serie:
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