[Flags]
public enum Direction
{
None = 0x0000,
Left = 0x0001,
Right = 0x0002,
Up = 0x0004,
Down = 0x0008,
Forward = 0x0016,
Backward = 0x0032
}
Run Code Online (Sandbox Code Playgroud)
真的很困惑,我在if语句中使用这个枚举是这样的:
if ((enumValues & Direction.Forward) == Direction.Forward)
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
检查它是否包含集合中的标志.
if ((enumValues & Direction.Right) == Direction.Forward)
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
if ( Direction.Right )尽管在集合中没有包含Right标志,但仍然运行此代码,我甚至使用中断调试它并且值不包含Direction.Right但它仍然返回true并运行代码段.
我是否设置了枚举错误或者我是否错误地查询了值?
我通常不使用旗帜我只是认为它会很好地利用它们.