E 'in questo modo perché è quello che dice lo spec ...
Questo è un altro motivo per cui è sempre una buona idea per dare a tutti i tuoi enumerazioni un elemento con il valore 0, 'cos è molto probabile che farli con quel valore a volte.
La sezione appropriata nel linguaggio C# spec 6.1.3:
6.1.3 implicita La conversione di enumerazione
una conversione enumerazione implicita permessi decimale integer letterale 0 essere convertiti in qualsiasi tipo enum e in qualsiasi tipo nullable il cui tipo sottostante sia di tipo enum. In quest'ultimo caso, la conversione viene valutata convertendo il tipo di enum sottostante e avvolgendo il risultato (§4.1.10).
Per quanto riguarda il motivo per cui E 'in questo modo - beh, credo solo che qualcuno del comitato linguaggio che decide queste cose avrebbero saputo.
In effetti, abbiamo qualcosa di simile se si guarda il commento di Rawling alla domanda originale.
fonte
2013-06-06 11:03:33
** Duplicato ** di [Perché passare a enum accetta la conversione implicita a 0 ma non per qualsiasi altro intero?] (Http://stackoverflow.com/questions/14950750/why-switch-for-enum-accetti- conversione implicita-a-0-ma-no-per-qualsiasi-altro-intege) ** e ** [Risoluzione del valore del valore del compilatore e valori interi "0" codificati in modo rigido] (http://stackoverflow.com/questions/14224465/compilatore-value-type-resolution-and-0-interi valori hardcoded-). –
dupe definito, risposta breve, perché lo fa. – Jodrell
per impostazione predefinita, se il valore del primo membro di enumerazione non è impostato nella dichiarazione, il suo valore è zero. http://msdn.microsoft.com/en-us/library/ms182149(v=vs.100).aspx –