como - int to enum c#
Comparaciones de rendimiento entre las evaluaciones enum y ints (3)
En C # Enumeraciones están alineados para ser constantes por el compilador de todos modos, por lo que el beneficio es la legibilidad del código
¿Habría diferencia de velocidad entre
if (myInt == CONST_STATE1)
y
if (myEnum == myENUM.State1)
Cª#?
Además, no estoy seguro de que deba preocuparse por esto en absoluto. Suena como una optimización prematura. Estoy seguro de que en cualquier sistema, hay cuellos de botella más grandes que las comparaciones enum. :)
Lo que hay que tener cuidado al usar Enums es no usar ninguna de las operaciones que requieren reflexión (o usarlas con cuidado). Por ejemplo:
- myEnumValue.ToString ()
- Enum.Parse ()
- Enum.IsDefined ()
- Enum.GetName ()
- Enum.GetNames ()
En el caso de las constantes, la opción de realizar cualquier operación que requiera reflexión no existe. Sin embargo, en el caso de enums lo hace. Entonces deberás tener cuidado con esto.
He visto informes de perfil en los que las operaciones relacionadas con las validaciones / reflexiones enum tomaron hasta el 5% del tiempo de CPU (un escenario donde las validaciones enum se realizaron en cada llamada a un método API). Esto se puede reducir en gran medida escribiendo una clase que almacena en caché los resultados del reflejo de los tipos enum que se utilizan.
Una vez dicho esto, recomendaría tomar la decisión de usar enum vs. constante en función de lo que tenga sentido desde el punto de vista del diseño . Esto es mientras nos aseguramos de que el equipo conozca las implicaciones de rendimiento de las operaciones que implican la reflexión.