在中间添加枚举

时间:2018-04-26 20:21:16

标签: c# enums

我偶然发现了一个代码,我的同事最近修改了现有的枚举,并在最后一次枚举之前添加了另一个枚举,我猜他可能已经这样做,因为最后一个枚举是无(我们不在同一时区讨论)。

我担心的是,如果解决方案中的任何代码试图获取None Enum的整数值(幸运的是我找不到,但是将来某些代码会尝试做什么),那么这可能会产生错误的结果

不安全吗?

  1. 在最后一个
  2. 中添加枚举
  3. 或者将整数值与每个枚举相关联,以便解决排序问题?
  4. 请稍微说清楚。

    更新 在其中一个问题中,我读到@Marc Gravell提到插入中间是危险的,我是否正确理解他?请参阅https://stackoverflow.com/a/12716043/2719527

2 个答案:

答案 0 :(得分:5)

enum列表中的任何位置添加新值都没有问题,因为当重新编译具有新enum的代码时,编译器会为所有值找出正确的序数。

如果旧的enum的实例持久存在于数据库中,则会出现问题。在这种情况下,显式分配值将是一个更好的选择,因为重新编译不会更改存储的值,并且在检索时会转换为不正确的值。

答案 1 :(得分:2)

如果您担心违反变更,请执行您建议的任何事情。最安全的是总是为每个成员分配一个值,这是明确的,你不依赖编译器为你生成一些东西。