Sofern Sie keinen guten Grund haben, die Rohwerte zu verwenden, sollten Sie immer nur implizite Werte verwenden und diese mit Status.Activeund referenzieren Status.Inactive.
Der Haken ist, dass Sie möglicherweise Daten in einer Flatfile oder DB speichern oder eine Flatfile oder DB verwenden möchten, die von einer anderen Person erstellt wurde. Wenn Sie es selbst machen, machen Sie es so, dass die Nummerierung zu dem passt, wofür die Aufzählung verwendet wird.
Wenn die Daten nicht Ihnen gehören, möchten Sie natürlich alles verwenden, was der ursprüngliche Entwickler als Nummerierungsschema verwendet hat.
Wenn Sie die Aufzählung als Flaggensatz verwenden möchten, gibt es eine einfache Konvention, die es wert ist, befolgt zu werden:
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
}
Die Werte sollten Zweierpotenzen sein und können mit Bitverschiebungsoperationen ausgedrückt werden. Nonesollte natürlich sein 0, ist aber Allweniger offensichtlich -1. ~0ist die binäre Negation von 0und führt zu einer Zahl, auf die jedes Bit gesetzt ist 1, was einen Wert von darstellt-1 . Für zusammengesetzte Flags (häufig zur Vereinfachung verwendet) können andere Werte mit dem bitweisen Operator oder dem Operator zusammengeführt werden |.