Должно быть, я делаю что-то очень глупое, но не могу понять что. В простом консольном приложении у меня есть;
[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.
Это очень странно, и все мои поиски в Google говорят, что это очень просто и просто работает, но я не могу этого понять. /повесил голову от стыда.