C# 4.0 为什么不是';t字节枚举的默认支持类型?

C# 4.0 为什么不是';t字节枚举的默认支持类型?,c#-4.0,C# 4.0,为什么字节不是枚举的默认支持类型 Int32似乎有些过分了。我使用过的每个枚举都包含不到20个值。这是一个微观优化,但似乎所有常见用法的值都低于256(以我有限的经验) 是否还有更技术性的原因,或者仅仅是为了确保枚举使用的“所有常见”场景都能正常工作,而Int32在所有情况下都没有那么昂贵,只是在某些情况下 此外,我还得到了编译器不改变支持类型的暗示(或者没有人提到它在我读到的内容中优化了枚举)。它是否优化了备份类型,因为它知道编译时的值范围?因为x86指令集本机支持int32操作。使用int8

为什么字节不是枚举的默认支持类型

Int32似乎有些过分了。我使用过的每个枚举都包含不到20个值。这是一个微观优化,但似乎所有常见用法的值都低于256(以我有限的经验)

是否还有更技术性的原因,或者仅仅是为了确保枚举使用的“所有常见”场景都能正常工作,而Int32在所有情况下都没有那么昂贵,只是在某些情况下


此外,我还得到了编译器不改变支持类型的暗示(或者没有人提到它在我读到的内容中优化了枚举)。它是否优化了备份类型,因为它知道编译时的值范围?

因为x86指令集本机支持int32操作。使用int8操作数时没有性能增益。此外,对自然对齐的操作数(地址可被32整除的32位地址)的内存访问也比必须先洗牌子字的速度更快