整数在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) 。
