あなたはビットフラグのために使用されているenum
、すなわちを持っている場合は、ビット単位の対C#Enum.HasFlag、オペレータのチェック
[Flags]
internal enum _flagsEnum : byte
{
None = 0, //00000000
Option1 = 1, //00000001
Option2 = 1 << 1, //00000010
Option3 = 1 << 2, //00000100
Option4 = 1 << 3, //00001000
Option5 = 1 << 4, //00010000
Option6 = 1 << 5, //00100000
Option7 = 1 << 6, //01000000
Option8 = 1 << 7, //10000000
All = Byte.MaxValue,//11111111
}
_flagsEnum myFlagsEnum = _flagsEnum.None;
が、それはより速く行うことです。..
bool hasFlag = myFlagsEnum.HasFlag(_flagsEnum.Option1);
かへdo ..
bool hasFlag = myFlagsEnum & _flagsEnum.Option1 != 0
複数のフラグをチェックする際にパフォーマンスの違いがある場合は、それも考慮してください。
通常、私はリファレンスソースをチェックアウトしますが、この場合Enum.HasFlagsはextern InternalHasFlagsに行くので、何をしているのか分かりません。
パフォーマンスコストがあります。参照してください:http://stackoverflow.com/questions/7368652/what-is-it-that-makes-enum-hasflag-so-slow –
早すぎる最適化のようです。私が 'HasFlag'について気に入らないことの1つは、同じタイプのものではなく、引数として' enum'オブジェクトを受け入れることです。 –
'HasFlag'は単純なビット単位のチェック以上のことを行いますhttp://blogs.microsoft.co.il/bnaya/2011/01/28/enumhasflag-good-or-bad/ –