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!
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:
intVal == 0. 0 has no bit set but 0 & -1 == 00 wich isn't a power of 2 but has not bit set.enumvalue.IsSingleFlag (in addition to enumvalue.HasFlag, which Comes with the framework)