-3

所以我有一个标志枚举

public Enum test
{
   test1 = 1,
   test2 = 2,
   test3 = 4,
   etc.
}

我如何测试那一位,并且只设置一位?

我之前已经 100% 做到过,但我的脑子现在不行了!

4

1 回答 1

13

要检查一个数字中是否只设置了一个位,该数字必须(根据定义)是 2 的幂。因此,您可以使用以下内容进行测试:

int intVal = ((int)myEnumFlags);
bool singleBitIsSet = intVal != 0 && (intVal & (intVal-1)) == 0;

我对这类事情最喜欢的参考:

http://aggregate.org/MAGIC

于 2013-10-15T08:49:49.007 回答