Учитывая случай, когда у меня есть объект, который может находиться в одном или нескольких состояниях true/false, я всегда был немного нечетким, почему программисты часто используют флаги + битмаски вместо того, чтобы просто использовать несколько логических значений.
Все это в рамках платформы .NET. Не уверен, что это лучший пример, но .NET framework имеет следующее:
public enum AnchorStyles
{
None = 0,
Top = 1,
Bottom = 2,
Left = 4,
Right = 8
}
Поэтому, учитывая стиль привязки, мы можем использовать битмаски для определения того, какое из состояний выбрано. Однако похоже, что вы могли бы сделать то же самое с классом/структурой AnchorStyle с свойствами bool, определенными для каждого возможного значения, или массивом индивидуальных значений перечисления.
Конечно, главная причина моего вопроса в том, что мне интересно, следует ли мне следовать подобной практике с моим собственным кодом.
Итак, зачем использовать этот подход?
- Меньше потребления памяти? (похоже, что он потребляет меньше, чем массив /struct bools).
- Лучшая производительность стека/кучи, чем структура или массив?
- Более быстрая операция сравнения? Более быстрое добавление/удаление значений?
- Более удобный для разработчика, который его написал?