O ile nie masz dobrego powodu, aby używać surowych wartości, powinieneś zawsze używać niejawnych wartości i odwoływać się do nich za pomocą Status.Active
i Status.Inactive
.
Problem polega na tym, że możesz chcieć przechowywać dane w pliku prostym lub bazie danych albo użyć pliku płaskiego lub bazy danych utworzonej przez kogoś innego. Jeśli robisz to sam, zrób to tak, aby numeracja była zgodna z tym, do czego służy Enum.
Jeśli dane nie są twoje, oczywiście będziesz chciał użyć tego, co pierwotny programista użył jako schematu numeracji.
Jeśli planujesz używać Enum jako zestawu flag, istnieje prosta konwencja, której warto przestrzegać:
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
}
Wartości powinny być potęgami dwójki i mogą być wyrażone przy użyciu operacji przesunięcia bitowego. None
oczywiście powinno 0
, ale All
jest to mniej oczywiste -1
. ~0
jest binarną negacją 0
i skutkuje liczbą, dla której każdy bit jest ustawiony na 1
, który reprezentuje wartość-1
. W przypadku flag złożonych (często używanych dla wygody) inne wartości mogą być łączone przy użyciu operatora bitowego lub |
.