Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Русский_Проект: Изучение Visual Basic C#.Учебный курс


C#. Учебный курс

Здравствуйте, программисты! Сегодня на 14 занятии поговорим об операторе switch, который часто применяется в программировании.

Оператор switch

Оператор switch позволяет выбрать нужное действие из перечня заранее заготовленных вариантов. Работает оператор следующим образом: значение выражения последовательно сравнивается с каждой константой из списка. При совпадении значения с одной из констант выполняется связанная с ней последовательность операторов.

Синтаксис

switch(expression)
{
    case constant1:
        statement sequence
        break;
    case constant2:
        statement sequence
        break;
    case constant3:
        statement sequence
        break;
    default:
        statement sequence
        break;
}

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

Операторы ветви default выполняются тогда, когда ни одна из констант ветвей case не соответсвует выражению. Данная ветвь не обязательна. Если при отсутствии ветви default ни одна констант не соответствует выражениею, то никакие действия не будут выполнены. Если соответствие найдено, то выполняются операторы, связанные с ветвью case, а затем с помощью оператора break контроль над выполнением программы передается конструкции, следующей за оператором switch.

Предположим, что наша программа должна попросить пользователя ввести одно из двух возможных значений и в зависимости от этого выбрать один из вариантов возможных действий:

using System;

class Selections
{
    public static void Main ()
   {
        Console.WriteLine ("1 = мышка\n2 = молоко\n");  
        Console.WriteLine ("Выберите ваше любимое блюдо и нажмите Enter");
        string s = Console.ReadLine();
        
        int n = int.Parse(s);
        switch(n)
        {
           case 1:
               Console.WriteLine("Мышки, говоришь?");
               break;
           case 2:
               Console.WriteLine("Молоко - Отличный выбор!");
               break;
            default:
               Console.WriteLine("Вас просили выбрать любимое блюдо, а не щелкать по клаве куда попало.");
               break;
        }
   }
}

В этом примере если пользователь нажмент клавишу 1, то выполняется оператор в ветви case 1, а при нажатии на клавишу 2 выполняется оператор в ветви case 2. Если упрямый пользователь выбирает другие клавиши, то выполняется оператот ветви default.

В конструкции switch в С# можно производить выбор, используя в том числе и сравнение со строковыми значениями (не только числовыми). Поддерживается даже значение типа null для пустых строк.

Последовательность операторов, ассоциированная с одной ветвью case, не должна передавать управление программой следующей ветви case (правило запрещения передачи управления программой между ветвями case). Чтобы избежать появления ошибки используется оператор break. Если оператор break расположен после последовательности операторов ветви case, это приводит к выходу из всего оператора switch и передаче управления программой следующей конструкции за пределами switch. Оператор default также должен следовать этому правилу, и поэтому обычно заканчивается оператором break.

Недопустимо, чтобы одна последовательность операторов ветви case передавала управление программой операторам другой ветви. Но вполне допустимо, чтобы две и более ветви case были связаны с одной и той же последовательностью кода. Например, нам нужно определить, входит ли выбранноая буква в слово мяу:

// Использование нескольким ветвями case одной последовательность операторов
// Определяем, входит ли выбранная пользователем буква в слово мяу

using System;

public class Meow
{
   public static void Main() 
      {
            char ch;
         
            Console.Write("Введите любую букву: ");    
            ch = (char) Console.Read();
            switch(ch)
            {
                case 'м':
                case 'я':
                case 'у':   
                    Console.WriteLine("Эта буква входит в слово мяу");
                    break;
                default:
                    Console.WriteLine("Эта буква не входит в слово мяу");
                    break;
             }      
      }
}

Существует также возможность создания вложенных операторов switch.

Удачного вам программирования!


©2007 А.Климов
Русский_Проект

В избранное