es so ist, weil das ist, was die Spezifikation sagt ...
Dies ist ein weiterer Grund, warum es immer eine gute Idee, alle Ihre Aufzählungen mit dem Wert 0, ‚ein Element zu geben, weil du sie bekommen sind wahrscheinlich manchmal mit diesem Wert.
der entsprechende Abschnitt in der Sprache C# spec 6.1.3:
6.1.3 Implicit Enumeration Konvertierungen
Eine implizite Enumeration Umwandlung erlaubt die dezimale ganzzahlige-Literal 0 bis in einen Enum-Typ und in einen beliebigen NULL-Typ konvertiert werden, dessen zugrunde liegender Typ ein Enum-Typ ist. Im letzteren Fall wird die Konvertierung ausgewertet, indem in den zugrunde liegenden Enum-Typ konvertiert und das Ergebnis umschlossen wird (§ 4.1.10).
Was warum es auf diese Weise - na ja, ich denke, nur jemand auf die Sprache Komitee, das diese Dinge entscheidet kennen würde.
In der Tat haben wir etwas wie das, wenn Sie auf die ursprüngliche Frage von rawlings Kommentar schauen.
** Duplizieren ** von [Warum Switch für Enum akzeptiert implizite Konvertierung zu 0, aber nein für andere Integer?] (Http://StackOverflow.com/questions/14950750/why-switch-for-enum-accepts- implicit-conversion-to-0-aber-for-any-any-intege) ** und ** [Compiler Werttyp Auflösung und Hardcoded "0" Integer-Werte] (http://stackoverflow.com/questions/14224465/Compiler-Werttyp-Auflösung-und-hardcoded-0-Integer-Werte). –
bestimmte dupe, kurze antwort, weil es so ist. – Jodrell
Wenn der Wert des ersten Aufzählungselements in der Deklaration nicht festgelegt ist, ist der Wert 0. http://msdn.microsoft.com/en-us/library/ms182149(v=vs.100).aspx –