The*_*Saw 13 c# enums binary-compatibility
想象一下DLL中的这个枚举.
public enum Colors
{
    Red,
    Green
}
添加枚举值是否会破坏二进制兼容性?如果我要更改它,现有的EXE会破坏吗?
public enum Colors
{
    Red,
    Green,
    Blue
}
我看到了这个答案,但它似乎解决了插入值的问题.如果我只在最后添加值,那可以吗?
Mar*_*ell 18
不,这不会破坏二进制兼容性(尽可能多:程序集仍会加载等),因为枚举基本上是整数文字常量.在中间插入值显然是一个非常危险的想法,但你已经排除了这一点.
但是,它可能会导致您需要防范的许多其他问题:
switch特别是语句)可能无法预测新值; 从技术上讲,这也是一个问题,因为枚举没有经过值检查(枚举变量可以包含未定义的值)