Основы языка C# 2005. Евсеева О.Н - 77 стр.

UptoLike

Составители: 

81
5.4.2. Оператор switch
Частным, но важным случаем выбора из нескольких вариантов является
ситуация, при которой выбор варианта определяется значениями некоторого
выражения. Соответствующий оператор C#, унаследованный от C++, но с
небольшими изменениями в синтаксисе, называется оператором switch.
Вот его синтаксис:
switch(выражение)
{
case константное_выражение_1: [операторы_1]; break;
...
case константное_выражение_K: [операторы_K]; break;
[default: операторы_N оператор_перехода_N; break]
}
Ветвь default может отсутствовать. Отметим, по синтаксису допустимо,
чтобы после двоеточия следовала пустая последовательность операторов, а не
последовательность, заканчивающаяся оператором перехода. Константные
выражения в case должны иметь тот же тип, что и switch-выражение.
Семантика оператора switch чуть запутана. Вначале вычисляется
значение switch-выражения. Затем оно поочередно в порядке следования
предложений case сравнивается на совпадение с константными выражениями.
Как только достигнуто совпадение, выполняется соответствующая
последовательность операторов case-ветви. Поскольку последний оператор
этой последовательности является оператором перехода (чаще всего это
оператор break), то обычно он завершает выполнение оператора switch. Таким
оператором может быть оператор goto, передающий управление другой case-
ветви, которая, в свою очередь, может передать управление еще куда-нибудь,
нарушая хорошо структурированную последовательность операторов.
Семантика осложняется еще и тем, что case-ветвь может быть пустой
последовательностью операторов. Тогда в случае совпадения константного
выражения этой ветви со значением switch-выражения будет выполняться
первая непустая последовательность очередной case-ветви. Если значение
switch-выражения не совпадает ни с одним константным выражением, то
выполняется последовательность операторов ветви default, если же таковой
ветви нет, то оператор switch эквивалентен пустому оператору. Case-выражения
могут быть только константным выражением.
Разбор случаевэто часто встречающаяся ситуация в самых разных
задачах.
Когда разбор случаев предполагает проверку попадания в некоторый
диапазон значений, приходится прибегать к оператору if для формирования
специальной переменной.
Этот прием демонстрируется в следующем примере, где идет работа над
данными нашего класса Testing: