Es gibt ein:Warum wechseln für enum akzeptiert implizite Konvertierung in 0, aber keine für andere Ganzzahl?
enum SomeEnum
{
A = 0,
B = 1,
C = 2
}
Jetzt Compiler ermöglicht es mir zu schreiben:
istSomeEnum x = SomeEnum.A;
switch(x)
{
case 0: // <--- Considered SomeEnum.A
break;
case SomeEnum.B:
break;
case SomeEnum.C:
break;
default:
break;
}
0
SomeItems.A
betrachtet. Aber ich kann nicht schreiben:
SomeEnum x = SomeEnum.A;
switch(x)
{
case 0:
break;
case 1: // <--- Here is a compilation error.
break;
case SomeEnum.C:
break;
default:
break;
}
Warum nur implizite Konvertierung für 0
existiert?
Siehe Eric Lipperts Antwort auf eine ähnliche Frage: http: // stackoverflow.com/a/14238286/414076 –