C'è un:Perché passare a enum accetta la conversione implicita a 0 ma non per nessun altro intero?
enum SomeEnum
{
A = 0,
B = 1,
C = 2
}
Ora compilatore mi permette di scrivere:
SomeEnum x = SomeEnum.A;
switch(x)
{
case 0: // <--- Considered SomeEnum.A
break;
case SomeEnum.B:
break;
case SomeEnum.C:
break;
default:
break;
}
0
è considerato SomeItems.A
. Ma non posso scrivere:
SomeEnum x = SomeEnum.A;
switch(x)
{
case 0:
break;
case 1: // <--- Here is a compilation error.
break;
case SomeEnum.C:
break;
default:
break;
}
Perché esiste solo la conversione implicita per 0
?
Vedere la risposta di Eric Lippert a una domanda simile: http: // StackOverflow.it/a/14238286/414076 –