为什么Byte不是枚举的默认支持类型?

Jos*_*eld 2 c#-4.0

为什么Byte不是枚举的默认支持类型?

Int32似乎有点矫枉过正.我用过的每个枚举都含有20个以下的值.这是一个微观优化,但似乎所有常见的用法都低于256个值[在我有限的经验中].

是否有更多的技术原因,或者只是为了确保Enum使用的"所有常见"场景都能正常工作并且除了极端情况外,Int32并不是那么昂贵?

另外,我已经明白了编译器没有改变支持类型的含义(或者没有人提到它优化了我读过的枚举).它是否优化了支持类型,因为它在编译时知道值的范围?

rit*_*ter 5

因为x86指令集本身支持int32操作.使用int8操作数时没有性能提升.对于自然对齐的操作数的存储器访问(在可被32整除的地址上为32位)的执行速度比对子字必须首先进行混洗的速度快.