• Если тип выражения переключения sbyte, byte, short, ushort,
int, uint, long, ulong, bool, char, string или enum-type, или, если это
это обнуляемый тип, соответствующий одному из этих типов, то это
управляющий тип оператора switch.
• В противном случае, точно одно пользовательское неявное преобразование (§6.4) должно
существуют от типа выражения переключения до одного из следующих
возможные типы управления: sbyte, byte, short, ushort, int, uint, long,
ulong, char, string или обнуляемый тип, соответствующий одному из
эти типы.
• В противном случае, если такого неявного преобразования не существует или если более
существует одно такое неявное преобразование, возникает ошибка времени компиляции.
Надеюсь, это поможет.