À moins que vous n'ayez une bonne raison d'utiliser les valeurs brutes, vous ne devriez jamais utiliser que des valeurs implicites et les référencer avec Status.Active
et Status.Inactive
.
Le problème est que vous souhaiterez peut-être stocker des données dans un fichier plat ou une base de données, ou utiliser un fichier plat ou une base de données créé par quelqu'un d'autre. Si vous le faites vous-même, faites en sorte que la numérotation corresponde à l'utilisation de Enum.
Si les données ne vous appartiennent pas, bien sûr, vous voudrez utiliser tout ce que le développeur d'origine avait utilisé comme schéma de numérotation.
Si vous prévoyez d'utiliser Enum comme un ensemble d'indicateurs, il existe une convention simple qui vaut la peine d'être suivie:
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
}
Les valeurs doivent être des puissances de deux et peuvent être exprimées à l'aide d'opérations de décalage de bits. None
, devrait évidemment être 0
, mais All
est moins évident -1
. ~0
est la négation binaire de 0
et donne un nombre dont chaque bit est défini sur 1
, ce qui représente une valeur de-1
. Pour les indicateurs composés (souvent utilisés pour des raisons de commodité), d'autres valeurs peuvent être fusionnées à l'aide de l'opérateur binaire ou |
.