我一定是在做一些非常愚蠢的事情,但我看不出是什么。在我有一个简单的控制台应用程序中;
[Flags]
public enum ConsoleStates : byte
{
TopLevel,
All,
MainMenu,
SingleLeagueSelected,
}
然后
public class Program
{
static void Main(string[] args)
{
Program p = new Program();
p.StartUp(args);
}
private bool CheckFlag(ConsoleStates targetVal, ConsoleStates checkVal)
{
return ((targetVal & checkVal) == checkVal);
}
private void StartUp(string[] args)
{
int x = 0;
ConsoleStates states = (ConsoleStates.All | ConsoleStates.MainMenu);
if (CheckFlag(states, ConsoleStates.SingleLeagueSelected))
{
x++;
}
}
}
我的问题 X 最后应该为零,但始终为 1。据我了解,它应该做一些明智的 AND 操作并检查是否有 singleleagueSelected 并返回 false。
这很奇怪,我所有的谷歌搜索都说这很简单而且很有效,但对于我的生活来说,我无法得到它。/羞愧地低着头。