1. ホーム
  2. c#

[解決済み】フラグの組み合わせのどれかが設定されているかどうかを確認するには?

2022-04-10 16:02:34

質問

例えば、こんなenumがあるとします。

[Flags]
enum Letters
{
     A = 1,
     B = 2,
     C = 4,
     AB = A | B,
     All = A | B | C,
}

を確認するには、例えば AB が設定されている場合、このようにすることができます。

if((letter & Letters.AB) == Letters.AB)

結合フラグ定数のフラグのいずれかが設定されているかどうかを確認する、以下のような簡単な方法はありますか?

if((letter & Letters.A) == Letters.A || (letter & Letters.B) == Letters.B)

例えば & を何かで上書きしてください。

解決方法は?

もし、文字がABのいずれかの文字を持っているかどうかを知りたい場合は AND & 演算子を使用します。のようなものです。

if ((letter & Letters.AB) != 0)
{
    // Some flag (A,B or both) is enabled
}
else
{
    // None of them are enabled
}