Liam Liam - 1 year ago 118
C# Question

Test that only a single bit is set in Flags Enum

So I have a flags Enum

public Enum test
test1 = 1,
test2 = 2,
test3 = 4,

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!

Answer Source

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:

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download