やりたいこと
- 変数flagが、複数のフラグのどれか一つでも持っていればTrueにしたい
検証
[Flags]
enum F {
A = 1 << 0,
B = 1 << 1,
C = 1 << 2,
};
F flag = F.A;
Console.WriteLine($"{flag.HasFlag(F.A)}"); // True
Console.WriteLine($"{flag.HasFlag(F.B)}"); // False
Console.WriteLine($"{flag.HasFlag(F.A|F.B)}"); // False ← こう書ければ楽だった
flag = F.A|F.B;
Console.WriteLine($"{flag.HasFlag(F.A|F.B)}"); // True
flag = F.A|F.B|F.C;
Console.WriteLine($"{flag.HasFlag(F.A|F.B)}"); // True
結論
- 普通にビット演算
Console.WriteLine($"{(flag & (F.A|F.B))>0}");