el punto sobre tipos subyacente es ya bien cubierto, por lo que a añadir un contexto diferente:
a nivel IL/tiempo de ejecución, los casos de enumeraciones no existen. Sólo existen:
a: para el compilador b: al tiempo de ejecución como un valor en caja c: en los metadatos (parámetro/campo/declaraciones de variables)
En los demás casos, que son puramente los valores de tipo entero (más comúnmente int
). El compilador usa variables enum (etc) para análisis estático, resolución de sobrecarga, etc. pero los códigos de operación que emite son idénticos a los que habría emitido para valores enteros constantes/literales; es decir,
SomeEnum foo = SomeEnum.WithValueOne;
int bar = 1;
tendrán IL idéntica (excepto el tipo de variable, tal vez).
La única vez que se pone interesante es si la emisión de una operación de caja, o una llamada como .ToString(), etc.
Por lo tanto: siempre y cuando no se encajonarlos (almacenarlos en un campo object
/etc.), entonces no hay (en tiempo de ejecución) ninguna diferencia significativa entre una enumeración o un entero cuando se trata de almacenamiento o rendimiento (a menos que use .ToString(), etc.)
¿Qué quiere decir "forma más liviana", memoria ¿consumo? –
Nota secundaria; sería poco común SUPERAR los nombres; no válido ... Solo inusual. –