В C # вам рекомендуется добавить атрибут [Flags] в перечисления битовой маски, например так:
[Flags]
public enum Condiments
{
None = 0,
Ketchup = 1,
Mustard = 2,
Mayo = 4,
Pickle = 8,
AllTheWay = 15
}
Я обнаружил, что у меня есть код, который ошибочно выполнял побитовые операции над перечислением без атрибута [Flags]
, который вообще не был битовой маской (First = 1, Second = 2, Third = 3 и т. Д.). Это, конечно, логически неправильно, но вполне приемлемо для компилятора.
Мне интересно, есть ли способ использовать атрибут [Flags]
или какой-то другой подход, чтобы превратить это в ошибку / предупреждение во время компиляции. Я не знаю, с чего начать, но кажется, что это должно быть выполнимо, поэтому любая помощь будет оценена.