Если у вас нет веских оснований для использования необработанных значений, вам следует использовать только неявные значения и ссылаться на них с помощью 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
.Для составных флагов (часто используемых для удобства) другие значения могут быть объединены с использованием побитового или оператора |
.