Создает перечисление, где значения соответствуют битам в целом числе. Добавление атрибута Flags позволило вам выполнить еще несколько битовых операций со значениями перечисления.
[Flags]
public enum CanBe {
Sold = 1,
Bought = 2,
Exchanged = 4
}
Теперь вы можете просто использовать оператор или между значениями:
CanBe can = CabBe.Sold | CanBe.Exchanged.
Вы можете добавить состояние с помощью оператора | =:
can |= CanBe.Sold;
Или несколько состояний:
can |= CanBe.Sold | CanBe.Bought;
Вы можете сохранить состояние с помощью оператора & =:
can &= CanBe.Sold;
Или несколько состояний:
can &= CanBe.Sold | CanBe.Bought;
Вы можете удалить состояния, используя оператор ~ для создания дополнения к значению:
can &= ~CabBe.Bough;
Или несколько состояний:
can &= ~(CabBe.Bough | CanBe.Exchanged);
Вы можете проверить состояние с помощью оператора &:
if ((can & CanBe.Sold) != 0) ...
или несколько состояний одновременно:
if ((can & (CanBe.Sold | CanBe.Bought)) != 0) ...
Или убедитесь, что установлено несколько состояний:
if ((can & (CanBe.Sold | CanBe.Bought)) == (CanBe.Sold | CanBe.Bought)) ...