A menos que você tenha um bom motivo para usar os valores brutos, só deve usar valores implícitos e referenciá-los com Status.Active
e Status.Inactive
.
O problema é que você pode querer armazenar dados em um arquivo simples ou banco de dados, ou usar um arquivo simples ou banco de dados que outra pessoa criou. Se você estiver fazendo isso sozinho, faça com que a numeração se ajuste ao que o Enum é usado.
Se os dados não forem seus, é claro que você deseja usar o que o desenvolvedor original usou como esquema de numeração.
Se você planeja usar o Enum como um conjunto de sinalizadores, há uma convenção simples que vale a pena seguir:
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
}
Os valores devem ter potências de dois e podem ser expressos usando operações de deslocamento de bits. None
, obviamente deveria ser 0
, mas All
é menos obviamente -1
. ~0
é a negação binária de 0
e resulta em um número que tem todos os bits definidos como 1
, o que representa um valor de-1
. Para sinalizadores compostos (frequentemente usados por conveniência), outros valores podem ser mesclados usando o bit a bit ou o operador |
.