如果您的应用程序中有一个枚举,而您只有几个项,那么您是否应该强制底层类型成为尽可能小的类型?
enum smaller : byte
{
one,
two,
three
};
发布于 2009-03-15 23:48:12
不是的。不要过早地优化,除非您已经通过分析器证明了这实际上是一个问题。
发布于 2009-03-16 00:04:19
与最佳实践相关的:
如果您没有特殊的理由将枚举设置为byte类型,则应该将其保留为默认值。
任何时候在switch语句中使用枚举时,对于无效的枚举值都应该有一个"default“子句。因此,无论是检查256-NumRealEnumValues还是2^32-NumRealEnumValues都没有关系。两者都将有一个默认的子句来处理所有无效的情况。
显式设置枚举类型的一个原因是,如果您希望您的枚举对应于程序中的另一种类型,并且需要在它们之间进行显式强制转换。
将类型更改为最小拟合也不会帮助您解决版本控制问题。除非您精确地填写了枚举的最大大小。我所说的版本控制问题是指,当您有一个使用枚举的已编译dll,然后添加一个新的枚举值时,一些代码可能会执行,而这些代码不应该出现在switch语句的"default“子句中。
与效率相关的:
不,将其设置为字节在效率方面没有任何好处。
int的使用效率更高,因为x86上的cpu有32位寄存器。复制到寄存器中是一次复制32位。
当您使用较小的类型时,您必须将寄存器的一部分清零,并复制到寄存器的其余低阶位。
发布于 2009-03-16 00:14:10
这样做的唯一原因是,如果您使用定义的协议存储或传输此值,该协议要求字段具有该大小。
https://stackoverflow.com/questions/648823
复制相似问题