Dadas las siguientes banderas,Banderas C# Enum comparación
[Flags]
public enum Operations
{
add = 1,
subtract = 2,
multiply = 4,
divide = 8,
eval = 16,
}
¿Cómo podría implementar una condición IF para realizar cada operación? En mi intento, la primera condición es verdadera para add, eval, que es correcta. Sin embargo, la primera condición también es verdadera para restar, eval, que es incorrecta.
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;
}
no veo cuál es el problema.
¿Soy yo el que piensa que [Flags] para la operación que se muestra no es correcto? Estoy luchando por pensar en una muestra del mundo real donde tendría las banderas en las operaciones matemáticas que se muestran ... – Sunny
Estoy de acuerdo Sunny. Se suponía que las banderas representaban estados en una calculadora. No estoy seguro de por qué lo hice de esta manera. En retrospectiva, no lo haría de esta manera ahora. –
Posible duplicado de [Cómo comparar banderas en C#?] (Http://stackoverflow.com/questions/40211/how-to-compare-flags-in-c) –