Además de las razones técnicas por las que ... Aquí hay un principio de diseño.
especificando la enumeración como tener el almacenamiento byte es un detalle de implementación. Usar la enumeración es un problema diferente, no debería tener que saber o preocuparse por los detalles de implementación de la misma.
En el código del cliente, el hecho de que esté usando una enumeración debería significar que de hecho quiere decir usar una enumeración, no un byte, o un largo etc. De lo contrario, ¿por qué no usar el tipo de datos que quiere decir?
fuerza al tipo de languaged como C# se esfuerzan para que sea un poco más difícil de paso fuera de su codificación "contratos" esto generalmente ayuda a hacer el diseño de aplicaciones sólo un poco mejor.
Ahora, por supuesto, no estoy diciendo que no hay veces que tiene que involucrarse en los detalles de implementación, un buen ejemplo es en decir un objeto asignador relacional (ORM) en la que está correlacionando un C# tipo de datos a un tipo de datos de base de datos , las enumeraciones son un buen ejemplo en el que debe conocer su tipo de almacenamiento para asignarlo. Pero en estos casos, su IMO es buena para tener que expresarse o reflejarse explícitamente, es una buena bandera en las revisiones de que aquí estás específicamente saliendo del uso habitual.
¿Tiene una citación para esa última parte? – porges
Para una sola variable, la última parte puede ser correcta debido al relleno. Sin embargo, creo que si tienes una matriz grande de una enumeración con un tipo de byte subyacente, será como tener un 'byte []' en lugar de un 'int []'. –
Sí, lo que dijo Jon Skeet. ¿Pero quién diablos usa una variedad de enumeraciones? :) – EMP