Я, должно быть, делаю что-то очень глупое, но я не вижу, что.В простом консольном приложении у меня есть:
[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. Как я понимаю, она должна делатьнемного мудрой операции И и проверьте, есть ли здесь singleleagueSelected и вернули ли вы ложь.
Это очень странно, и все мои поиски в Google говорят, что это очень просто и просто работает, но для жизни я могу 'не понимаю/ опускает голову от стыда.