Quantcast
Channel: Planeta Código
Viewing all articles
Browse latest Browse all 2699

Variable not found: ¿Aún usas ToString() para obtener el nombre de los elementos de un enum?

$
0
0
C#Va un truquillo muy rápido que, aparte de al que os habla, quizás a alguno más os provoque un momento “ahh, pues claro, cómo no se me había ocurrido antes” ;)

Y es que el problema con las costumbres es que son difíciles de quitar; por ejemplo, probablemente muchos estamos acostumbrados a obtener el nombre de los miembros de un enum de la siguiente forma:
publicenum Color { Red, Green, Blue }
staticvoid Main(string[] args)
{
Console.WriteLine(Color.Red.ToString());
// Output: Red
}
A priori es correcto: llevamos años haciéndolo así y no nos ha ido mal del todo. Bueno, o sí, pero probablemente no por este motivo ;)

Aun a sabiendas de que el operador nameof existe desde hace ya bastante tiempo y habiéndolo utilizado en muchas ocasiones, a veces la costumbre hace que no nos planteemos otros casos de uso, como con los enum que veíamos arriba.

El siguiente código, totalmente equivalente al anterior, muestra cómo podemos utilizar este operador para obtener el nombre del miembro:
publicenum Color { Red, Green, Blue }
staticvoid Main(string[] args)
{
Console.WriteLine(nameof(Color.Red));
// Output: Red
}
Fijaos que, además de que sigue siendo tipado fuerte, acabamos de conseguir un microbeneficio adicional: nos hemos llevado a tiempo de compilación (porque, recordad, nameof se resuelve en compilación) la obtención del nombre, por lo que el rendimiento será mejor que la llamada a ToString(), que es resuelta en tiempo ejecución.

Publicado en Variable not found.

Viewing all articles
Browse latest Browse all 2699