如果您有一个用于位标志的
或者去做...
枚举(enum)
,即:[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);
或者去做...
bool hasFlag = myFlagsEnum & _flagsEnum.Option1 != 0
如果检查多个标志之间存在性能差异,请考虑这一点。
通常我会查看引用源代码,但在这种情况下,Enum.HasFlags只是转到一个外部InternalHasFlags,因此我不知道它在做什么。
HasFlag
的一件事是它接受任何枚举对象作为参数,而不是相同类型的枚举对象。 - Mr AndersonHasFlag()
方法。 - Mr Anderson