Así que aquí Sé que mi enumeración es un tipo int
No, no lo es. Tiene un subyacente tipo de int
, pero es un tipo separado. Diablos, eso es la mitad del punto de tener enumeraciones en primer lugar, que puede mantener los tipos separados.
Cuando desea convertir entre un valor enum y su equivalente numérico, emite - no es tan doloroso, y mantiene su código más limpio en términos de seguridad de tipo. Básicamente, es una de esas cosas en las que la rareza de que sea la derecha lo que hace que sea apropiado hacerlo explícito.
EDIT: Una rareza que usted debe tener en cuenta es que hay es una conversión implícita del valor constante 0 al tipo de enumeración:
Test foo = 0;
De hecho, en la implementación de MS, lo que puede ser cualquier tipo de constante 0:
Test surprise = 0.0;
Eso es un error, pero que es demasiado tarde para arreglar :)
Creo que el resto de esta conversión implícita fue para simplificar la comprobación de si los bits están configurados en una lista de banderas, y otras comparaciones que usarían "el valor 0". Personalmente, no soy partidario de esa decisión, pero al menos es importante conocerla.
http://stackoverflow.com/questions/97391/how-to-get-the-underlying-value-of-an-enum – 2kay
Es una opción de diseño. Creo que los inventores de C# piensan que es más seguro y/o más legible. –
¿Qué razón convincente existiría para este escenario? –