
2.5. Оператор множественного выбора switch
Оператор switch позволяет кратко выразить логику оператора if-else, приведенного в примере, с помощью более жесткой структуры.
Рассмотрим синтаксический блок оператора switch.
Switch (<Выражение для switch>)
case <Константное выражение> :
< Оператор1>;
< Оператор2>;
...
< Оператор break>
case <Константное выражение> :
< Оператор1>;
< Оператор2>;
...
< Оператор break>
...
default:
< Оператор1>;
< Оператор2>;
...
< Оператор break>
<Выражение для switch> - это управляющее выражение.
сase, default – называются разделами выбора.
<Константное выражение> - следует за ключевым словом case и называется case-значением или case-меткой. Причем, каждая из них должна быть уникальной.
< Оператор break> - используется для завершения раздела выбора.
Примечание:
Количество блоков case не ограничено.
Блок default может быть один или не одного.
Пример 2.5. Решить пример 2.4., с использованием оператора switch.
using System;
class Program
{
static void Main(string[] args)
{
decimal a, b;
string operation;
// Ввод данных с клавиатуры
Console.WriteLine("Введите два числа");
a = Decimal.Parse(Console.ReadLine());
b = Decimal.Parse(Console.ReadLine());
// Ввод названия операции с клавиатуры
Console.WriteLine("Введите название операции: ");
operation = Console.ReadLine();
// Начало блока switch.
switch (operation)
{
// Начало раздела operation=="Сумма"
case "Сумма":
Console.WriteLine("Сумма а = {0} и в = {1} равна: {2}", a, b, a + b);
break;
// Конец раздела operation=="Сумма"
// Начало раздела operation=="Разность"
case "Разность":
Console.WriteLine("Разность а = {0} и в = {1} равна: {2}", a, b, a - b);
break;
// Конец раздела operation=="Разность"
// Начало раздела operation=="Произведение"
case "Произведение":
Console.WriteLine("Произведение а = {0} и в = {1} равно: {2}", a, b, a * b);
break;
// Конец раздела operation=="Произведение"
// Начало раздела operation=="Частное"
case "Частное":
Console.WriteLine("Частное а = {0} и в = {1} равно: {2}", a, b, a / b);
break;
// Конец раздела operation=="Частное"
// Начало раздела default, который выполняется в случае если совпадений не обнаружено
default:
Console.WriteLine("Ошибка ввода операции");
break;
}
//Конец блока switch
Console.ReadLine();
} }
}
Рис.2.11. Результат работы программы из примера 3.4., выполненной при помощи оператора switch
Идея работы блока довольна проста. Разделы выбора заменяют условный оператор if, а блок default выполняет функцию else. Стоит обратить внимание на оператор break. Его задачей является завершение раздела выбора. После того как срабатывает оператор break в блоке раздела «Сумма», программа более на проверяет другие разделы оператора switch, а переходит к оператору следующему за блоком switch т.е. к оператору Console.ReadLine().