switch

Оператор многовариантного ветвления. Может быть вложенным.
Значение выражения последовательно сравнивается с константами и если они совпадают, то выполняется инструкция.

Синтаксис:
switch(выражение) {
 case константа :
  инструкции;
 break;
...
 default:
  инструкции;
 break;
}

выражение — должно иметь целочисленный тип (int, char) или тип string , использование логических операций или сравнения недопустимо;
case — является меткой и не имеет самостоятельного значения;
значение — соответствовать результату выражения; break или return или throw или goto — являются операторами перехода;
default — использование этого оператора необязательно. В этом блоке можно разместить обработчик непредвиденной ситуации или сообщение о ее возникновении;

обычная switch инструкция

Скрыть

Показать

Копировать
  Main.cs  
  • using System;
  •  
  • class Program {
  •  public static int Main() {
  •   Console.Write("Введите число : ");
  •   decimal a = decimal.Parse(Console.ReadLine());
  •   one: Console.Write("Введите число : ");
  •   decimal b = decimal.Parse(Console.ReadLine());
  •   two: Console.Write("Выберите арифметическое действие '+' '-' '*' '/' '%' : ");
  •   string str = Console.ReadLine();
  •   switch(str) {
  •    case "+":
  •     Console.WriteLine("{0} {1} {2} = {3}", a, str, b, (a + b));
  •    break;
  •    case "-":
  •    Console.WriteLine("{0} {1} {2} = {3}", a, str, b, (a - b));
  •    break;
  •    case "*":
  •    Console.WriteLine("{0} {1} {2} = {3}", a, str, b, (a * b));
  •    break;
  •    case "/":
  •     if(b == 0) {
  •      Console.WriteLine("На ноль делить нельзя!");
  •      goto one;
  •     }
  •     else {
  •      Console.WriteLine("{0} {1} {2} = {3}", a, str, b, (a / b));
  •     }
  •    break;
  •    case "%":
  •    if(b == 0) {
  •     Console.WriteLine("На ноль делить по модулю нельзя!");
  •     goto one;
  •    }
  •    else {
  •     Console.WriteLine("{0} {1} {2} = {3}", a, str, b, (a % b));
  •    }
  •    break;
  •    default:
  •     Console.WriteLine("Вы ввели не тот символ, попробуйте еще!");
  •    goto two;
  •   }
  •   Console.ReadKey();
  •   return 0;
  •  }
  • }
Введите число : 10
Введите число : 0
Выберите арифметическое действие '+' '-' '*' '/' '%' : /
На ноль делить нельзя!
Введите число : 2
Выберите арифметическое действие '+' '-' '*' '/' '%' : a
Вы ввели не тот символ, попробуйте еще!
Выберите арифметическое действие '+' '-' '*' '/' '%' : /
10 / 2 = 5

вложенная switch инструкция

Скрыть

Показать

Копировать
  Main.cs  
  • using System;
  •  
  • class Program {
  •  public static int Main() {
  •   one: Console.Write("Выберите умножение '*' или возведение в степень '^' : ");
  •   string str = Console.ReadLine();
  •   switch(str) {
  •    case "*":
  •     Console.WriteLine("Таблица умножения");
  •     Console.Write("Введите число : ");
  •     byte a = byte.Parse(Console.ReadLine());
  •     Console.WriteLine();
  •     for(byte i=1; i<11; i++) {
  •      switch(i) {
  •       case 1:
  •        Console.WriteLine("{0} * {1} = {2}", a, i, (a*i));
  •       break;
  •       case 2:
  •        Console.WriteLine("{0} * {1} = {2}", a, i, (a*i));
  •       break;
  •       case 3:
  •        Console.WriteLine("{0} * {1} = {2}", a, i, (a*i));
  •       break;
  •       case 4:
  •        Console.WriteLine("{0} * {1} = {2}", a, i, (a*i));
  •       break;
  •       case 5:
  •        Console.WriteLine("{0} * {1} = {2}", a, i, (a*i));
  •       break;
  •       case 6:
  •        Console.WriteLine("{0} * {1} = {2}", a, i, (a*i));
  •       break;
  •       case 7:
  •        Console.WriteLine("{0} * {1} = {2}", a, i, (a*i));
  •       break;
  •       case 8:
  •        Console.WriteLine("{0} * {1} = {2}", a, i, (a*i));
  •       break;
  •       case 9:
  •        Console.WriteLine("{0} * {1} = {2}", a, i, (a*i));
  •       break;
  •       case 10:
  •        Console.WriteLine("{0} * {1} = {2}", a, i, (a*i));
  •       break;
  •      }
  •     }
  •    break;
  •    case "^":
  •     Console.WriteLine("Возведение числа в степень");
  •     Console.Write("Введите число : ");
  •     int b = byte.Parse(Console.ReadLine());
  •     Console.WriteLine();
  •     for(byte i=1; i<11; i++) {
  •      switch(i) {
  •       case 1:
  •        Console.WriteLine("{0} ^ {1} = {2}", b, i, Math.Pow(b, i));
  •       break;
  •       case 2:
  •        Console.WriteLine("{0} ^ {1} = {2}", b, i, Math.Pow(b, i));
  •       break;
  •       case 3:
  •        Console.WriteLine("{0} ^ {1} = {2}", b, i, Math.Pow(b, i));
  •       break;
  •       case 4:
  •        Console.WriteLine("{0} ^ {1} = {2}", b, i, Math.Pow(b, i));
  •       break;
  •       case 5:
  •        Console.WriteLine("{0} ^ {1} = {2}", b, i, Math.Pow(b, i));
  •       break;
  •       case 6:
  •        Console.WriteLine("{0} ^ {1} = {2}", b, i, Math.Pow(b, i));
  •       break;
  •       case 7:
  •        Console.WriteLine("{0} ^ {1} = {2}", b, i, Math.Pow(b, i));
  •       break;
  •       case 8:
  •        Console.WriteLine("{0} ^ {1} = {2}", b, i, Math.Pow(b, i));
  •       break;
  •       case 9:
  •        Console.WriteLine("{0} ^ {1} = {2}", b, i, Math.Pow(b, i));
  •       break;
  •       case 10:
  •        Console.WriteLine("{0} ^ {1} = {2}", b, i, Math.Pow(b, i));
  •       break;
  •      }
  •     }
  •    break;
  •    default:
  •     Console.WriteLine("Вы ввели не тот символ, попробуйте еще!");
  •    goto one;
  •   }
  •   Console.ReadKey();
  •   return 0;
  •  }
  • }
Выберите умножение '*' или возведение в степень '^' : a
Вы ввели не тот символ, попробуйте еще!
Выберите умножение '*' или возведение в степень '^' : ^
Возведение числа в степень
Введите число : 3

3 ^ 1 = 3
3 ^ 2 = 9
3 ^ 3 = 27
3 ^ 4 = 81
3 ^ 5 = 243
3 ^ 6 = 729
3 ^ 7 = 2187
3 ^ 8 = 6561
3 ^ 9 = 19683
3 ^ 10 = 59049

switch инструкция с провалом


Если после оператора case не стоит оператор break , то происходит так называемый "провал", выполнение переходит к следующему оператору case.
Скрыть

Показать

Копировать
  Main.cs  
  • using System;
  •  
  • class Program {
  •  public static int Main() {
  •   one: Console.Write("Введите слово 'Понедельник' или 'Вторник' : ");
  •   string str = Console.ReadLine();
  •   switch(str) {
  •    case "Понедельник":
  •    case "ПОНЕДЕЛЬНИК":
  •    case "понедельник":
  •     Console.WriteLine("Вы ввели слово : {0}", str);
  •    break;
  •    case "Вторник":
  •    case "ВТОРНИК":
  •    case "вторник":
  •     Console.WriteLine("Вы ввели слово : {0}", str);
  •    break;
  •    default:
  •     Console.WriteLine("Вы ввели не правильно, попробуйте еще");
  •    goto one;
  •   }
  •   Console.ReadKey();
  •   return 0;
  •  }
  • }
Введите слово 'Понедельник' или 'Вторник' : вторник
Вы ввели слово : вторник