Frage

So I have a flags Enum

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

How can I test that one bit, and only one bit is set?

I've 100% done this before but my mind is not working this am!

War es hilfreich?

Lösung

To check that only a single bit is set in a number, the number must (by definition) be a power of two. As such, you can use the following to test:

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

My favorite reference for this kind of thing:

http://aggregate.org/MAGIC

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top