webentwicklung-frage-antwort-db.com.de

Was ist der Standardwert für die Enum-Variable?

Eine Enum-Variable, weiß jemand, ob immer das erste Element als Standard verwendet wird?

219
user496949

Es ist das Mitglied der Aufzählung, das den Wert 0 Darstellt. Insbesondere aus der Dokumentation :

Der Standardwert von enum E Ist der Wert, der durch den Ausdruck (E)0 Erzeugt wird.

Nehmen Sie als Beispiel die folgende Aufzählung:

enum E
{
    Foo, Bar, Baz, Quux
}

Ohne die Standardwerte zu überschreiben, gibt das Drucken von default(E)Foo zurück, da es das erste vorkommende Element ist.

Es ist jedoch nicht immer der Fall, dass 0 Einer Aufzählung durch das erste Mitglied dargestellt wird. Zum Beispiel, wenn Sie dies tun:

enum F
{
    // Give each element a custom value
    Foo = 1, Bar = 2, Baz = 3, Quux = 0
}

Wenn Sie default(F) drucken, erhalten Sie Quux, nicht Foo.

Wenn keines der Elemente in einer Aufzählung G0 Entspricht:

enum G
{
    Foo = 1, Bar = 2, Baz = 3, Quux = 4
}

default(G) gibt wörtlich 0 zurück, obwohl sein Typ als G verbleibt (wie in den obigen Dokumenten angegeben, eine Umwandlung in den angegebenen Aufzählungstyp).

353
BoltClock

Ich halte es für ziemlich gefährlich, sich auf die Reihenfolge der Werte in einer Aufzählung zu verlassen und anzunehmen, dass die erste immer die Standardeinstellung ist. Dies ist eine gute Vorgehensweise, wenn Sie den Standardwert schützen möchten.

enum E
{
    Foo = 0, Bar, Baz, Quux
}

Andernfalls ist nur ein nachlässiger Umgestalter der Bestellung erforderlich, und Sie haben eine völlig andere Standardeinstellung.

9
user3154431