C# Language Prova i valori enum in stile flags con logica bit a bit


Esempio

Un valore enum in stile flags deve essere testato con logica bit a bit perché potrebbe non corrispondere a nessun singolo valore.

[Flags]
enum FlagsEnum
{
    Option1 = 1,
    Option2 = 2,
    Option3 = 4,
    Option2And3 = Option2 | Option3;

    Default = Option1 | Option3,
}

Il valore Default è in realtà una combinazione di altri due uniti con un OR bit a bit. Quindi per testare la presenza di un flag dobbiamo usare un AND bit a bit.

var value = FlagsEnum.Default;

bool isOption2And3Set = (value & FlagsEnum.Option2And3) == FlagsEnum.Option2And3;

Assert.True(isOption2And3Set);