Будет:
myFlags == 0
Достаточно? 0 означает, что биты не установлены, при условии, что вы используете флаги и ничего не делаете со значениями.
Учитывая это перечисление:
[Flags]
enum Fruit
{
Forbidden = 0,
Apple = 1,
Orange = 2,
Banana = 4
}
И этот код:
Fruit f = Fruit.Apple | Fruit.Banana;
if (f == 0)
MessageBox.Show("what?");
f = Fruit.Forbidden;
if (f == 0)
MessageBox.Show("expected");
Он делает то, что вы ожидаете, однако он проверяет значение подчиненного, не выполняя побитовые операции, поэтому, если вы неправильно изменили значение подчиненного, вы начнете получать проблемы, но у вас будут и другие проблемы.
Дано:
[Flags]
enum Fruit
{
Apple = 1,
Orange = 2,
Banana = 4
}
И
Fruit f = Fruit.Apple | Fruit.Banana;
if (f == 0)
MessageBox.Show("what?");
f = f & ~Fruit.Apple & ~Fruit.Banana;
if (f == 0)
MessageBox.Show("expected");
Так же ведет себя.