El "valor" varía de 0 a 15 (sus posibles valores). ¿Cuándo se cumplirán esas 4 condiciones "si"? Si mi (int) valor = 2, ¿significa esto 0010?
if ((int)value & 0x1)
{
//statement here
}
if ((int)value & 0x2)
{
//statement here
}
if ((int)value & 0x4)
{
//statement here
}
if ((int)value & 0x8)
{
//statement here
}
Enum.HasFlagmétodo para probar bits. Ver: Enum.HasFlag .

value(leerif(value & 0x4)como "Es el 3er bit delvalueconjunto (= 1)). Como aparentemente tiene problemas para entender el código, supongo que no es suyo. Esto (y el hecho de que no está preguntando para su revisión) hace que esta pregunta fuera del tema de CR.SE .