The documentation you are studying was written in 2003 and is not up-to-date for the latest version of the language. I suggest that you stop studying the archive of the 2003 documentation and instead read the 2010 documentation if you are using a more modern version of C#.
The definitive reference that answers your question is the C# specification section 8.7.2, a portion of which I reproduce for your convenience here.
The governing type of a switch
statement is established by the switch
expression.
• If the type of the
switch expression is sbyte, byte,
short, ushort, int, uint, long, ulong,
bool, char, string, or an enum-type,
or if it is the nullable type
corresponding to one of these types,
then that is the governing type of the
switch statement.
• Otherwise,
exactly one user-defined implicit
conversion must exist from the
type of the switch expression to one
of the following possible governing
types: sbyte, byte, short, ushort,
int, uint, long, ulong, char, string,
or, a nullable type corresponding to
one of those types.
• Otherwise, if
no such implicit conversion exists, or
if more than one such implicit
conversion exists, a compile-time
error occurs.