Я должен делать что-то очень глупое, но я не вижу, что. В простом консольном приложении у меня есть;флаг проверки флагов enum всегда возвращает true
[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 является там и вернуть ложь.
Это очень странно, и весь мой поисковик говорит, что это очень просто и просто работает, но для жизни меня я не могу получить./висит голова в стыде.
«висит голова в стыде» ... а также вы должны. Эта проблема была бы очень легко найти с помощью отладчика, если бы вы только пробовали. SO не должен заменять отладчик, задайте вопрос, когда вы пробовали одношаговый и все еще застреваете. –
@BenVoigt Я неоднократно пробовал отладчик и проходил через то, что происходило. Не делайте предположений! – Jon