Структура switch

Розглянемо наступний оператор, що організовує розгалуження. Це оператор switch, який представляє з себе альтернативний спосіб опису умови if з перевіркою якогось виразу на різні значення.

Розглянемо наступний оператор, що організовує розгалуження. Це оператор switch, який представляє з себе альтернативний спосіб опису умови if з перевіркою якогось виразу на різні значення. Синтаксис цього оператора представлений нижче.

switch (вираз) {
    case значення1: ...... break;
    case значення2:
    case значенняЗ: ...... break;
    default: ...... break;
}

Під виразом розуміється будь-який вираз, який має цілий тип або тип даних char, enum чи string.
Цей оператор обчислює значення виразу і починає проходити по всіх мітках case, порівнюючи значення міток із значенням виразу.Якщо програма знайшла таку мітку, то виконуються всі оператори, які знаходяться після цієї мітки до оператора break, після якого здійснюється перехід в кінець оператора switch. У випадку, якщо мітка не знайдена, то перехід здійснюється на мітку default. Мітка default може бути відсутньою, тоді перехід здійснюється відразу в кінець оператора switch.

char temperature;
            //......
            switch (temperature)
            {
                case 'C': Console.WriteLine("Celsius"); break;
                case 'F': Console.WriteLine("Farenheit"); break;
                case 'K': Console.WriteLine("Kelvin"); break;
                default: Console.WriteLine("Unknown"); break;
            }

Якщо необхідно виконати один и той же блок коду для декількох значень, то для цього записують послідовність case виразів. В цьому випадку працює механізм відсутності оператора break, тобто в прикладі нижче, вирази приймають значення 'с', то перехід здійснюється на мітку case 'с':, але операторів після цієї мітки немає і немає оператора break, тому виконуються всі оператори підряд, тобто ті, що йдуть після мітки case 'С':

  char temperature;
            //......
            switch (temperature)
            {
                case 'c':
                case 'C': Console.WriteLine("Celsius"); break;
                case 'f':
                case 'F': Console.WriteLine("Farenheit"); break;
                case 'k':
                case 'K': Console.WriteLine("Kelvin"); break;
                default: Console.WriteLine("Unknown"); 
            }
        }


Зауважимо, що мітки, які вказані в case, повинні бути унікальними.
На відміну від інших мов програмування, у вас є можливість використовувати goto-оператор для переходу на інші мітки в операторі switch.   

switch (someChar)
{
    case 'a' ......
    goto case 'c';
    case 'b': ......
    break;
    case 'с': ......
    goto default;
    default:
        ......
    break;
}

 

Додати коментар

Loading