Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

18 años online

el blog de José M. Aguilar

Inicio El autor Contactar

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

¡Microsoft MVP!
jueves, 16 de octubre de 2014
imageHace unos días mostrábamos por aquí el nuevo operador nameof que acompañará a C# 6, y cuya función, resumidamente, es obtener el nombre a nivel de código de la variable o miembro a la que se aplica:



En los comentarios de este post, el amigo Kiquenet se preguntaba qué incidencia podía tener el uso de este operador en el rendimiento de nuestras aplicaciones, y esa duda es la que vamos a responder muy rápidamente ahora.

Se podía intuir que la incidencia sería cero porque la resolución del nombre tenía toda la pinta de ser realizada en tiempo de compilación y, por tanto, los usos del operador nameof serían transformados en una constantes de cadena, pero la verdad es que siempre quedaba la duda de si había algún tipo de “magia” adicional por detrás.

Por esta razón, he realizado una prueba muy sencilla. Primero, implementando y compilando el siguiente código:



Seguidamente, descompilando la .dll resultante con ayuda de dotPeek, podemos ver que el código que finalmente ha sido incluido en el ensamblado es el siguiente:



Aunque la optimización ha hecho algún estrago, creo que queda claro que la llamada a nameof es sustituida en tiempo de compilación por una constante de cadena (en este caso, “number”). Por tanto, ahora sí podemos asegurar que el uso de nameof ni tiene incidencia alguna sobre el rendimiento en tiempo de ejecución.

Si queréis conocer más sobre el C# que se avecina, no os perdáis los posts anteriores de la serie:
Publicado en Variable not found.

Aún no hay comentarios, ¡sé el primero!