Сравнение флагов C # Enum
Учитывая следующие флаги,
[Flags]
public enum Operations
{
add = 1,
subtract = 2,
multiply = 4,
divide = 8,
eval = 16,
}
Как я могу реализовать условие IF для выполнения каждой операции? В моей попытке первое условие верно длядобавить, eval, что правильно. Однако первое условие также верно длявычитать, eval, что неверно.
public double Evaluate(double input)
{
if ((operation & (Operations.add & Operations.eval)) == (Operations.add & Operations.eval))
currentResult += input;
else if ((operation & (Operations.subtract & Operations.eval)) == (Operations.subtract & Operations.eval))
currentResult -= input;
else
currentResult = input;
operation = null;
return currentResult;
}
Я не вижу, в чем проблема.