Раздел 8.7.2 спецификации C # 4 гласит, что тип, на который можно переключаться, должен быть:
sbyte
, byte
, short
, ushort
, int
, uint
, long
, ulong
, bool
, char
, string
или перечисление -тип, или […] обнуляемый тип, соответствующий одному из этих типов
или тип, который неявно преобразуется в один из этих типов, за исключением bool
.