twe*_*ypi 3 c# enums bit-manipulation bit
这是一个我要求理解而不是找出问题的问题.考虑以下两点:
[Flags]
public enum Flags
{
NONE = 0x0,
PASSUPDATE = 0x1,
PASSRENDER = 0x2,
DELETE = 0x4,
ACCEPTINPUT = 0x8,
FADE_IN = 0x10,
FADE_OUT = 0x20,
FADE_OUT_COMPLETE = 0x40
}
[Flags]
public enum Flags
{
NONE = 0x0,
PASSUPDATE,
PASSRENDER,
DELETE,
ACCEPTINPUT,
FADE_IN ,
FADE_OUT,
FADE_OUT_COMPLETE
}
Run Code Online (Sandbox Code Playgroud)
如果我使用后一个枚举检查某些东西,有时会有重叠(我认为类似的东西DELETE
被解释为PASSUPDATE | PASSRENDER
,而在第一个例子中,每个条目都独立于另一个条目(即DELETE
仅DELETE
使用不同的组合进行证明)一组标志).
Mar*_*ell 12
如果没有显式数字,枚举每次递增1(即使[Flags]
指定),所以你得到:
[Flags]
public enum Flags
{
NONE = 0x0,
PASSUPDATE, // = 1
PASSRENDER,// = 2
DELETE,// = 3
ACCEPTINPUT,// = 4
FADE_IN ,// = 5
FADE_OUT,// = 6
FADE_OUT_COMPLETE// = 7
}
Run Code Online (Sandbox Code Playgroud)
这根本不是你想要的数字(当然也不是按位标志,通常是2的连续幂)
归档时间: |
|
查看次数: |
426 次 |
最近记录: |