整数在C#中枚举铸造
这个问题在这里已经有了答案:
假设你的enum
是这样的:
enum E {
A = 1
B = 2
C = 4
D = 8
}
如果您将每个值转换为二进制值,您会得到:
A = 0001
B = 0010
C = 0100
D = 1000
现在让我们假设你尝试转换12
, 1100
二进制,这个enum
:
E enumTest = (E)12;
它会输出C|D
|
作为OR运算符, C|D
意味着0100 OR 1000
,它给了我们1100
或十进制的12
。
就你而言,它只是试图找出哪个enum
组合等于67239937
。 这被转换为二进制为100000000100000000000000001
。 然后转换为Test2|Test16|Test20
或1|(1 << 17)|(1 << 26)
。