新建个enum: enum TU
{
A=0x01,
B=0x04,
C=0x05,
D=0x15,
E=0x0
}Tu t=Tu.D;
t-=TU.A;//这是对的
t+=TU.A//错误
t=t+TU.A//错误
t=t-TU.A//错误
{
A=0x01,
B=0x04,
C=0x05,
D=0x15,
E=0x0
}Tu t=Tu.D;
t-=TU.A;//这是对的
t+=TU.A//错误
t=t+TU.A//错误
t=t-TU.A//错误
t -= TU.A; // 可以
t = (TU)(t - TU.A); // 可以,等价于上行
t = t - TU.A; // 错误
// 类比:byte b = 78, c = 5;
b -= c; // 可以
b = (byte)(b - c); // 可以,等价于上行
b = b - c; // 错误
两个枚举变量相加就没有明显的、自然的意义了,所以不允许。正如两个 DateTime 型的变量相减的意思是时间间隔,结果是 TimeSpan 型的变量,
而两个 DateTime 型的变量相加没有意义,不允许。
enum TU : uint
{
A=0,
B=0x7fffffff,
C=0x80000001,
}TU t = TU.A;
t -= TU.B;
t += TU.C;
如果+=,-=2个都可以,那上面2行结果都为TU.C,比较困惑,所以不允许+=还是比较明智的。