Если у вас нет веской причины для использования необработанных значений, вам следует использовать только неявные значения и ссылаться на них с помощью Status.Active
и Status.Inactive
.
Суть в том, что вы можете хранить данные в плоском файле или БД или использовать плоский файл или БД, созданные кем-то другим. Если вы делаете это самостоятельно, сделайте так, чтобы нумерация соответствовала тому, для чего используется Enum.
Если данные не ваши, конечно, вы захотите использовать то, что исходный разработчик использовал в качестве схемы нумерации.
Если вы планируете использовать Enum в качестве набора флагов, есть простое соглашение, которое стоит придерживаться:
enum Example
{
None = 0, // 0
Alpha = 1 << 0, // 1
Beta = 1 << 1, // 2
Gamma = 1 << 2, // 4
Delta = 1 << 3, // 8
Epsilon = 1 << 4, // 16
All = ~0, // -1
AlphaBeta = Alpha | Beta, // 3
}
Значения должны быть степенью двойки и могут быть выражены с использованием операций сдвига битов. None
, очевидно, должно быть 0
, но All
менее очевидно -1
. ~0
является двоичным отрицанием 0
и приводит к числу, для которого установлен каждый бит 1
, который представляет значение-1
. Для составных флагов (часто используемых для удобства) другие значения могут быть объединены с использованием побитового или оператора |
.