A menos que tenga una buena razón para usar los valores sin procesar, solo debe usar valores implícitos y hacer referencia a ellos con Status.Active
y Status.Inactive
.
El problema es que es posible que desee almacenar datos en un archivo plano o base de datos, o utilizar un archivo plano o base de datos que otra persona creó. Si lo está haciendo usted mismo, hágalo de manera que la numeración se ajuste para lo que se usa el Enum.
Si los datos no son suyos, por supuesto, querrá usar lo que el desarrollador original haya usado como esquema de numeración.
Si planea usar Enum como un conjunto de indicadores, hay una convención simple que vale la 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
}
Los valores deben ser potencias de dos y pueden expresarse mediante operaciones de desplazamiento de bits. None
, obviamente debería ser 0
, pero All
es menos obvio -1
. ~0
es la negación binaria de 0
y da como resultado un número que tiene cada bit establecido en 1
, que representa un valor de-1
. Para las banderas compuestas (a menudo utilizadas por conveniencia), se pueden fusionar otros valores usando el operador o el bit |
.