Örneğin AB'nin ayarlanıp ayarlanmadığını kontrol etmek için bunu yapabilirim:
if ((letter & Letters.AB) == Letters.AB)
Birleşik bayrak sabitinin bayraklarından herhangi birinin aşağıdakilerden daha iyi ayarlanıp ayarlanmadığını kontrol etmenin daha kolay bir yolu var mı?
Bu, hem A hem de B'nin ayarlandığını kontrol eder ve başka bayrakların ayarlanıp ayarlanmadığını yoksayar.
if((letter & Letters.A) == Letters.A || (letter & Letters.B) == Letters.B)
Bu kontroller , ya A veya B ayarlanır ve yoksaydıklarınız başka bayraklar set olsun veya olmasın.
Bu basitleştirilebilir:
if(letter & Letters.AB)
İşte ikili işlemler için C; bunu C # 'a uygulamak basit olmalıdır:
enum {
A = 1,
B = 2,
C = 4,
AB = A | B,
All = AB | C,
};
int flags = A|C;
bool anything_and_a = flags & A;
bool only_a = (flags == A);
bool a_and_or_c_and_anything_else = flags & (A|C);
bool both_ac_and_anything_else = (flags & (A|C)) == (A|C);
bool only_a_and_c = (flags == (A|C));
Bu arada, sorunun örneğindeki değişkenin isimlendirilmesi, tek bir harfi temsil ettiği anlamına gelebilecek tekil "harf" tir; örnek kod, bir dizi olası harfin ve birden çok değere izin verildiğini açıkça gösterir, bu nedenle değişken 'harfleri' yeniden adlandırmayı düşünün.