¿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&nbsp;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?