Une variable enum, tout le monde sait si elle est toujours le premier élément par défaut?
Quel que soit le membre de l'énumération représentant la valeur 0
. Plus précisément, à partir de la documentation :
La valeur par défaut d'un
enum E
est la valeur produite par l'expression(E)0
.
A titre d'exemple, prenons l'énumération suivante:
enum E
{
Foo, Bar, Baz, Quux
}
Sans remplacer les valeurs par défaut, l'impression default(E)
renvoie Foo
puisqu'il s'agit du premier élément.
Cependant, il est pas toujours le cas où 0
d'une énumération est représenté par le premier membre. Par exemple, si vous faites cela:
enum F
{
// Give each element a custom value
Foo = 1, Bar = 2, Baz = 3, Quux = 0
}
Imprimer default(F)
vous donnera Quux
et non Foo
.
Si aucun des éléments d'une énumération G
ne correspond à 0
:
enum G
{
Foo = 1, Bar = 2, Baz = 3, Quux = 4
}
default(G)
retourne littéralement 0
, bien que son type reste G
(comme indiqué par la documentation ci-dessus, une conversion vers le type enum donné).
Je pense qu'il est assez dangereux de s'appuyer sur l'ordre des valeurs dans une énumération et de supposer que la première est toujours la valeur par défaut. Ce serait une bonne pratique si vous souhaitez protéger la valeur par défaut.
enum E
{
Foo = 0, Bar, Baz, Quux
}
Sinon, il suffit d'un refactor imprudent de la commande et vous avez un défaut complètement différent.