Страница 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<10; i++) </b>
<b> switch(i) {</b>
<b> case 0:</b>
<b> Console.WriteLine("i равно нулю"); </b>
<b> break; </b>
<b> case 1:</b>
<b> Console.WriteLine("i равно единице"); </b>
<b> break; </b>
<b> case 2:</b>
<b> Console.WriteLine("i равно двум"); </b>
<b> break; </b>
<b> case 3:</b>
<b> Console.WriteLine("i равно трем"); </b>
<b> break; </b>
<b> case 4:</b>
<b> Console.WriteLine ("i равно четырем"); </b>
<b> break;</b>
<b> default: </b>
<b> Console.WriteLine("i равно или больше пяти"); </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<= 'E'; ch++) </b>
<b> switch (ch) { </b>
<b> case 'A':</b>
<b> Console.WriteLine("ch содержит A"); </b>
<b> break; </b>
<b> case 'B':</b>
<b> Console.WriteLine("ch содержит В"); </b>