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

时间:2012-01-12 17:22:01

标签: c#-4.0

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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