104
Часть I. Базовые сведения о программировании на языке C#
Оператор
switch
помещен в функцию
CountSimb()
, у которой два вы-
ходных параметра:
v_a
и
v_b
. С экрана запрашивается ввод символа,
хотя на самом деле вводится строка из одного символа (мы
ранее виде-
ли, что символ и строка — это разные типы данных). Оператор работает
следующим образом: в его заголовке помещена переменная, значение
которой сравнивается с конкретными вариантами значений, задаваемых
в теле оператора. Тело оператора ограничено фигурными скобками.
Внутри тела находятся блоки сравнения, состоящие из
ключевого слова
case
, двоеточия, после которого идет уже тело самого
case
. Между
case
,
после которого ставится обязательный пробел, и двоеточием задается
конкретное значение, с которым станет сравниваться
значение перемен-
ной, заданной в заголовке
case
. В нашем случае это строка
с
. Сравни-
ваемое значение записывается в соответствии со своим типом: у нас это
строка, значит, сравниваемое конкретное значение должно быть в ка-
вычках (у нас это
"a"
и
"b"
). Если бы сравниваемое значение было сим-
волом,
надо было бы писать, например,
'a'
или
'b'
. Если бы сравни-
ваемое значение было числом, то надо было бы писать, например,
1
или
2
, или
123
. И так далее.
После задания
case
(тоже как бы его заголовка) ниже пишутся операто-
ры,
определяющие, что надо делать в том случае, когда переменная
заголовка
switch
сравнилась с соответствующим значением, заданным
в заголовке
case
. То есть, как говорят, определяют функциональность
этого
варианта
case
. Завершается тело
case
знакомым нам оператором
break
, прерывающим выполнение
switch
и передающим управление на
первый оператор программы, который находится сразу за закрывающей
скобкой
switch
.
Таким способом задаются
необходимые варианты
case
, в каждом из
которых отражается конкретное значение переменной, указанной в за-
головке
switch
. Если бы нам надо было проверять не два, а, скажем,
4 символа (т. е. мы бы хотели узнать, какой из заданных четырех симво-
лов введен с клавиатуры), то мы должны были бы, например,
записать
case "a":
,
case "b":
,
case "c":
,
case "d":
и обрабатывать в телах этих
case
соответствующие ситуации. Если мы после каждого
case
в конце
его тела не поставим
break
, то программа "провалится" на следующий
case
, который уже выполнять не требуется. А не требуется ли? А если,
например, нужно что-то выполнить при условии,
что введенное значе-
ние либо
"а"
, либо
"b"
, либо
"с"
? Вот тогда отсутствием
break
можно и
воспользоваться: тела
case
, которые надо пропустить, следует оставить
пустыми (оставить только одни заголовки
case
), а в теле последнего
case
из этой группы уже задать функциональность, общую для всех
случаев "либо" и в конце —
break
.