case константа2:

  последовательность операторов

  break;

case константаЗ:

  последовательность операторов

  break;

.

.

.

default:

  последовательность операторов 

  break;

}

Заданное выражение в операторе switch должно быть целочисленного типа (char, byte, short или int), перечислимого или же строкового. (О перечислениях и символьных строках типа string речь пойдет далее в этой книге.) А выражения других типов, например с плавающей точкой, в операторе switch не допускаются. Зачастую выражение, управляющее оператором switch, просто сводится к одной переменной. Кроме того, константы выбора должны иметь тип, совместимый с типом выражения. В одном операторе switch не допускается наличие двух одинаковых по значению констант выбора.

Последовательность операторов из ветви default выполняется в том случае, если ни одна из констант выбора не совпадает с заданным выражением. Ветвь default не является обязательной. Если же она отсутствует и выражение не совпадает ни с одним из условий выбора, то никаких действий вообще не выполняется. Если же происходит совпадение с одним из условий выбора, то выполняются операторы, связанные с этим условием, вплоть до оператора break.

Ниже приведен пример программы, в котором демонстрируется применение оператора switch.

// Продемонстрировать применение оператора switch.

using System;

class SwitchDemo {

  static void Main() {

    int i;

    for(i=0; i<10; i++)

      switch(i) {

      case 0:

        Console.WriteLine("i равно нулю");

        break;

      case 1:

        Console.WriteLine("i равно единице");

        break;

      case 2:

        Console.WriteLine("i равно двум");

        break;

      case 3:

        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 'A':

        Console.WriteLine("ch содержит A");

        break;

      case 'B':

        Console.WriteLine("ch содержит В");

        break;

      case 'C':

        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 не является обязательной. Когда она не нужна, ее можно просто опустить.

Перейти на страницу:

Похожие книги