鉴于以下标志,C#枚举标志比较
[Flags]
public enum Operations
{
add = 1,
subtract = 2,
multiply = 4,
divide = 8,
eval = 16,
}
我怎么能实现一个IF条件进行各项操作?在我的尝试中,第一个条件是加,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;
}
我看不出是什么问题。
只是我认为[Flags]所显示的操作不正确?我正在努力想到一个真实的世界样本,我会在数学运算上显示标志...... – Sunny 2010-04-02 15:09:25
我同意Sunny。这些标志应该代表一个计算器中的状态。我不知道为什么我这样做。回想起来,我现在不会这样做。 – 2011-09-28 06:50:05
[如何在C#中比较标志?]可能重复(http://stackoverflow.com/questions/40211/how-to-compare-flags-in-c) – 2015-10-26 14:01:38