C# Enum Drapeaux De Comparaison

Donné les indicateurs suivants,

  [Flags]
    public enum Operations
    {
        add = 1,
        subtract = 2,
        multiply = 4,
        divide = 8,
        eval = 16,
    }

Comment pourrais-je mettre en œuvre un SI la condition d'exécution de chaque opération? Dans ma tentative, la première condition est vraie pour ajouter, eval, ce qui est correct. Cependant, la première condition est également vrai pour les soustraire, eval, ce qui est incorrect.

        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;
    }

Je ne vois pas quel est le problème.

  • Est-ce juste moi qui pense [Drapeaux] pour l'opération indiquée n'est pas correcte? J'ai du mal à penser à un monde réel de l'échantillon où j'aurais des Drapeaux sur des opérations mathématiques montré...
  • Je suis d'accord Ensoleillé. Les drapeaux étaient censés représenter les états dans une calculatrice. Je ne sais pas pourquoi j'ai fait de cette façon. Rétrospectivement, je ne voudrais pas faire de cette façon maintenant des jours.
  • Double Possible de Comment faire pour Comparer les Drapeaux en C#?