まずオフフラグ列挙型を定義する際に、各フラグは列挙型で、単一のビットを表す必要があります。
enum X { a = 1, b = 2, c = 4, d = 8 }
これはあなたにもフラグを組み合わせることができます:
CandD = 12, //has both c and d flags set.
それともあれば
enum X {
a = 1 << 0,
b = 1 << 1,
c = 1 << 2,
d = 1 << 3,
...
CAndD = c | d
}
単純な等価比較を使用して、特定のフラグのみが存在するかどうかをテストできます設定されています。
public bool ContainsOnly(X value, X flags)
{
return value == flags;
}
public bool ContainsOnlyCandD(X value)
{
return value == (X.c | X.d);
}
public bool ContainsBothCandDButCouldContainOtherStuffAsWell(X value)
{
return (value & (X.c | X.d)) == (X.c | X.d);
}
出典
2016-08-18 23:38:46
Bas
具体的な問題を明確にしたり、詳細を追加してハイライトしてくださいまさにあなたが必要とするものです。現在書かれているとおり、あなたが求めていることを正確に伝えるのは難しいです。 – Marusyk
'(m_ StatusType&(a | b))== a | b' –
'[Flags]'を使用するenum型とその使用法に関する_thorough_議論については、マークされた複製を参照してください。残っている混乱の中で自分を見つけた場合は、あなたが抱えている問題を明確に示す良い[mcve]を含む新しい質問を投稿してください。コードが何をしているのか、あなたが何をやりたいのか、そして何が問題なのかを具体的に説明してください。 –