我偶然发现了一个代码,我的同事最近修改了现有的枚举,并在最后一次枚举之前添加了另一个枚举,我猜他可能已经这样做,因为最后一个枚举是无(我们不在同一时区讨论)。
我担心的是,如果解决方案中的任何代码试图获取None Enum的整数值(幸运的是我找不到,但是将来某些代码会尝试做什么),那么这可能会产生错误的结果
不安全吗?
请稍微说清楚。
更新 在其中一个问题中,我读到@Marc Gravell提到插入中间是危险的,我是否正确理解他?请参阅https://stackoverflow.com/a/12716043/2719527
答案 0 :(得分:5)
在enum
列表中的任何位置添加新值都没有问题,因为当重新编译具有新enum
的代码时,编译器会为所有值找出正确的序数。
如果旧的enum
的实例持久存在于数据库中,则会出现问题。在这种情况下,显式分配值将是一个更好的选择,因为重新编译不会更改存储的值,并且在检索时会转换为不正确的值。
答案 1 :(得分:2)
如果您担心违反变更,请执行您建议的任何事情。最安全的是总是为每个成员分配一个值,这是明确的,你不依赖编译器为你生成一些东西。