私は何か非常にばかげたことをしているに違いありませんが、何がわかりません。私が持っている単純なコンソールアプリでは;
[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 を返す必要があります。
それは非常に奇妙で、私のグーグルはこれが非常にシンプルでうまくいくと言っていますが、私の人生ではそれを得ることができません. /恥ずかしそうに頭を下げる。