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