以下にフラグ列挙型があります。
[Flags]
public enum FlagTest
{
None = 0x0,
Flag1 = 0x1,
Flag2 = 0x2,
Flag3 = 0x4
}
ifステートメントをtrueに評価することはできません。
FlagTest testItem = FlagTest.Flag1 | FlagTest.Flag2;
if (testItem == FlagTest.Flag1)
{
// Do something,
// however This is never true.
}
どうすればこれを実現できますか?
None
、ゼロの値を持つフラグを提供することがMicrosoftによって推奨されています。msdn.microsoft.com/en-us/library/vstudio/…を
&
比較のための演算子を、|
ほかのようなものです:1|2=3
、5|2=7
、3&2=2
、7&2=2
、8&2=0
。0
はにfalse
、それ以外はに評価されますtrue
。