ВУЗ:
Составители:
Рубрика:
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: 
Страницы
- « первая
 - ‹ предыдущая
 - …
 - 75
 - 76
 - 77
 - 78
 - 79
 - …
 - следующая ›
 - последняя »
 
