Добавить в цитаты Настройки чтения

Страница 45 из 502

<b><i>  последовательность операторов</i> </b>

<b>  break;</b>

<b>.</b>

<b>.</b>

<b>.</b>

<b>default:</b>

<b><i>  последовательность операторов</i> </b>

<b>  break;</b>

<b>}</b>

Заданное выражение в операторе switch должно быть целочисленного типа (char, byte, short или int), перечислимого или же строкового. (О перечислениях и символьных строках типа string речь пойдет далее в этой книге.) А выражения других типов, например с плавающей точкой, в операторе switch не допускаются. Зачастую выражение, управляющее оператором switch, просто сводится к одной переменной. Кроме того, константы выбора должны иметь тип, совместимый с типом выражения. В одном операторе switch не допускается наличие двух одинаковых по значению констант выбора.

Последовательность операторов из ветви default выполняется в том случае, если ни одна из констант выбора не совпадает с заданным выражением. Ветвь default не является обязательной. Если же она отсутствует и выражение не совпадает ни с одним из условий выбора, то никаких действий вообще не выполняется. Если же происходит совпадение с одним из условий выбора, то выполняются операторы, связанные с этим условием, вплоть до оператора break.

Ниже приведен пример программы, в котором демонстрируется применение оператора switch.

<b>// Продемонстрировать применение оператора switch.</b>

<b>using System;</b>

<b>class SwitchDemo { </b>

<b>  static void Main() { </b>

<b>    int i;</b>

<b>    for(i=0; i&lt;10; i++) </b>

<b>      switch(i) {</b>

<b>      case 0:</b>

<b>        Console.WriteLine(&quot;i равно нулю&quot;); </b>

<b>        break; </b>

<b>      case 1:</b>

<b>        Console.WriteLine(&quot;i равно единице&quot;); </b>

<b>        break; </b>

<b>      case 2:</b>

<b>        Console.WriteLine(&quot;i равно двум&quot;); </b>

<b>        break; </b>

<b>      case 3:</b>

<b>        Console.WriteLine(&quot;i равно трем&quot;); </b>

<b>        break; </b>

<b>      case 4:</b>

<b>        Console.WriteLine (&quot;i равно четырем&quot;); </b>

<b>        break;</b>

<b>      default:    </b>

<b>        Console.WriteLine(&quot;i равно или больше пяти&quot;); </b>

<b>        break;</b>

<b>      }</b>

<b>  }</b>

<b>}</b>

Результат выполнения этой программы выглядит следующим образом.

<b>i равно нулю.</b>

<b>i равно единице.</b>

<b>i равно двум.</b>

<b>i равно трем.</b>

<b>i равно четырем.</b>

<b>i равно или больше пяти</b>

<b>i равно или больше пяти</b>

<b>i равно или больше пяти</b>

<b>i равно или больше пяти</b>

<b>i равно или больше пяти</b>

Как видите, на каждом шаге цикла выполняются операторы, связанные с совпадающей константой выбора, в обход всех остальных операторов. Когда же значение переменной i становится равным или больше пяти, то оно не совпадает ни с одной из констант выбора, а следовательно, выполняются операторы из ветви default.

В приведенном выше примере оператором switch управляла переменная i типа int. Как пояснялось ранее, для управления оператором switch может быть использовано выражений любого целочисленного типа, включая и char. Ниже приведен пример применения выражения и констант выбора типа char в операторе switch.

<b>// Использовать элементы типа char для управления оператором switch.</b>

<b>using System;</b>

<b>class SwitchDemo2 { </b>

<b>  static void Main() { </b>

<b>    char ch;</b>

<b>    for(ch='A'; ch&lt;= 'E'; ch++) </b>

<b>      switch (ch) { </b>

<b>      case 'A':</b>

<b>        Console.WriteLine(&quot;ch содержит A&quot;); </b>

<b>        break; </b>

<b>      case 'B':</b>

<b>        Console.WriteLine(&quot;ch содержит В&quot;); </b>