Integer to enum casting in C#
This question already has an answer here:
Let's say your enum
is this:
enum E {
A = 1
B = 2
C = 4
D = 8
}
If you translate each value to it's binary value, you get:
A = 0001
B = 0010
C = 0100
D = 1000
Now let's say you try to convert 12
, 1100
in binary, to this enum
:
E enumTest = (E)12;
It will output C|D
|
being the OR operator, C|D
would mean 0100 OR 1000
, which gives us 1100
, or 12
in decimal.
In your case, it's just trying to find which enum
combination is equal to 67239937
. This is converted to binary as 100000000100000000000000001
. This then converts to Test2|Test16|Test20
or 1|(1 << 17)|(1 << 26)
.
上一篇: 如何在枚举中保留一个枚举列表
下一篇: 整数在C#中枚举铸造