如果你的应用程序中有一个枚举而你只有几个项目,那么你应该强制基础类型是最小的类型吗?
enum smaller : byte { one, two, three };
JaredPar.. 40
不.不要过早地优化,除非你用剖析器证明它实际上是一个问题.
不.不要过早地优化,除非你用剖析器证明它实际上是一个问题.
与最佳做法有关:
如果没有特殊原因使枚举成为类型字节,则应将其保留为默认值.
无论何时在switch语句中使用枚举,都应该为无效的枚举值设置"default"子句.因此,如果要检查256-NumRealEnumValues或2 ^ 32-NumRealEnumValues,则无关紧要.两者都有一个处理所有无效情况的默认子句.
显式设置枚举类型的一个原因是,如果您希望枚举与程序中的其他类型相对应,则需要在它们之间显式转换.
将类型更改为最小拟合也无助于解决版本问题.除非您确实填写了枚举的最大大小.通过版本化问题我的意思是当你使用枚举编译dll时,然后你添加一个新的枚举值,一些代码可能会执行,而不是在switch语句的"default"子句中.
与效率有关:
在效率方面没有任何好处使它成为一个字节.
int的使用效率更高,因为x86上的cpu具有32位寄存器.复制到寄存器一次是32位.
当您使用较小的类型时,必须将寄存器的一部分归零并复制到寄存器的低阶位的其余部分.
执行此操作的唯一原因是,如果您使用定义的协议存储或传输此值,该协议要求字段具有该大小.