¿Por qué switch for enum acepta la conversión implícita a 0 pero no para ningún otro entero?
Hay un:
enum SomeEnum
{
A = 0,
B = 1,
C = 2
}
Ahora el compilador me permite escribir:
SomeEnum x = SomeEnum.A;
switch(x)
{
case 0: // <--- Considered SomeEnum.A
break;
case SomeEnum.B:
break;
case SomeEnum.C:
break;
default:
break;
}
0
se consideraSomeItems.A
. Pero no puedo escribir:
SomeEnum x = SomeEnum.A;
switch(x)
{
case 0:
break;
case 1: // <--- Here is a compilation error.
break;
case SomeEnum.C:
break;
default:
break;
}
¿Por qué sólo existe la conversión implícita para0
?