Diciamo che ho questo enum:Come verificare se sono impostati i flag di una combinazione di flag?
[Flags]
enum Letters
{
A = 1,
B = 2,
C = 4,
AB = A | B,
All = A | B | C,
}
Per verificare se ad esempio AB
è impostato posso fare questo:
if((letter & Letters.AB) == Letters.AB)
C'è un modo più semplice per controllare se una delle bandiere di un la costante di flag combinata è impostata rispetto alla seguente?
if((letter & Letters.A) == Letters.A || (letter & Letters.B) == Letters.B)
Potrebbe ad esempio sostituire lo &
con qualcosa?
Non troppo stabile quando si tratta di roba binario come questo ...
Non dovrebbe leggere tutti 'Tutto = A | B | C '? – stevehipwell
AB | C è equivalente ad A | B | C perché AB è stato definito come A | B prima. –
@Daniel Brückner - È equivalente, ma è meno leggibile. Soprattutto se l'enum è stato ampliato. – stevehipwell