Vas*_*sya 1 .net c# enums enum-flags
我想做这样的事,但我不能:
[Flags]
enum SomeEnum : int
{
None = 0,
A,
B,
C
}
SomeEnum en = SomeEnum.A;
en <<= 1; //Expect en == SomeEnum.B but I recieve an error here
Run Code Online (Sandbox Code Playgroud)
为了做到这一点?
枚举本身不是位字段.枚举的全部意义在于抽象出任何潜在的价值观.使用移位运算符意味着知道这些值是什么.
但是,如果你真的想转移,只需施放:
en = (SomeEnum)((int)en << 1);
Run Code Online (Sandbox Code Playgroud)