Console.WriteLine("i равно трем"); break; case 4:
Console.WriteLine ("i равно четырем"); break;
default: (
Console.WriteLine("i равно или больше пяти"); break;
}
}
}
Результат выполнения этой программы выглядит следующим образом.
i
равно
нулю.
i
равно
единице.
i
равно
двум.
i
равно
трем.
i
равно
четырем.
i
равно
или больше
пяти
i
равно
или больше
пяти
i
равно
или больше
пяти
i
равно
или больше
пяти
i
равно
или больше
пяти
Как видите, на каждом шаге цикла выполняются операторы, связанные с совпадающей константой выбора, в обход всех остальных операторов. Когда же значение
переменнойiстановится равным или больше пяти, то оно не совпадает ни с одной из констант выбора, а следовательно, выполняются операторы из ветвиdefault.
В приведенном выше примере операторомswitchуправляла переменнаяiтипаint.Как пояснялось ранее, для управления операторомswitchможет быть использовано выражений любого целочисленного типа, включая иchar.Ниже приведен пример применения выражения и констант выбора типаcharв оператореswitch.
// Использовать элементы типа char для управления оператором switch.
using System;
class SwitchDemo2 { static void Main { char ch;
for(ch='A'; ch<= ' E'; ch++) switch (ch) { case 'A1:
Console.WriteLine("ch содержит A"); break; case 'В':
Console.WriteLine("ch содержит В"); break; case 'С':
Console.WriteLine("ch содержит С"); break; case ' D' :
Console.WriteLine("ch содержит D"); break; case 'E':
Console.WriteLine("ch содержит E"); break;
}
}
}
Вот какой результат дает выполнение этой программы.
ch содержит А ch содержит В ch содержит С ch содержит D ch содержит Е
Обратите в данном примере внимание на отсутствие ветвиdefaultв оператореswitch.Напомним, что ветвьdefaultне является обязательной. Когда она не нужна, ее можно просто опустить.
Переход последовательности операторов, связанных с одной ветвьюcase,в следующую ветвьcaseсчитается ошибкой, поскольку в C# должно непременно соблюдаться правило недопущения "провалов" в передаче управления ходом выполнения программы. Именно поэтому последовательность операторов в каждой ветвиcaseоператораswitchоканчивается операторомbreak.(Избежать подобных "провалов", можно также с помощью оператора безусловного переходаgoto,рассматриваемого далее в этой главе, но для данной цели чаще применяется оператррbreak.)Когда