C# - Головна Простір імен
► System (5)► Microsoft (1) Для учнів (початківців)
► Відео уроки (4)► Навчання (177) ► Приклади програм (19) ► Секрети Сі Шарп (4) Для професіоналів
► Навчання (6)► Приклади програм (1) |
Оператор switch C#
Приватним, але важливим випадком вибору з декількох варіантів є ситуація, при якій вибір варіанту визначається значеннями деякого виразу. Відповідний оператор C#, успадкований від C++, але з невеликими змінами в синтаксисі, називається оператором switch. Ось його синтаксис:
switch(вираз) { case константное_выражение_1: [операторы_1 оператор_перехода_1] ... case константное_выражение_К: [операторы_К оператор_перехода_К] [default: операторы_N оператор_перехода_N] }
Спочатку обчислюється значення switch-вирази. Потім воно почергово у порядку слідування case порівнюється на збіг з константними виразами. Як тільки досягнуто збіг, виконується відповідна послідовність операторів case-гілки. Оскільки останній оператор цієї послідовності є оператором переходу (найчастіше це оператор break), то зазвичай він завершує виконання оператора switch. Використання операторів переходу - це погана ідея. Таким оператором може бути оператор goto, передає управління іншій case-гілки, яка, в свою чергу, може передати управління ще куди-небудь, отримуючи блюдо "спагеті" замість добре структурованої послідовності операторів. Семантика ускладнюється ще й тим, що case-гілка може бути порожньою послідовністю операторів. Тоді в разі збігу константного вираження цієї гілки зі значенням switch-виразу буде виконуватися перша не пустий послідовність черговий case-гілки. Якщо значення switch-вираження не збігається ні з одним константным виразом, то виконується послідовність операторів гілки default, якщо ж такої гілки немає, то оператор switch еквівалентний порожньому оператору.
Коли розбір випадків передбачає перевірку попадання в деякий діапазон значень, доводиться вдаватися до оператора if для формування спеціальної змінної. Цей прийом демонструється в наступному прикладі:
/// < summary> /// Визначає період залежно від віку - age /// Використання ветвящегося оператора if /// </summary> public void SetPeriod() { if ((age > 0)&& (age <7))period=1; else if ((age >= 7)&& (age <17))period=2; else if ((age >= 17)&& (age <22))period=3; else if ((age >= 22)&& (age <27))period=4; else if ((age >= 27)&& (age <37))period=5; else period =6; }
Цей приклад демонструє використання ветвящегося оператора if.
/// < summary> /// Визначає статус в залежності від періоду - period /// Використання розбору випадків - оператора Switch /// < /summary> public void SetStatus() { switch (period) { case 1: status = "child"; break; case 2: status = "schoolboy"; break; case 3: status = "student"; break; case 4: status = "junior researcher"; break; case 5: status = "senior researcher"; break; case 6: status = "professor"; break; default : status = "не визначено"; break; } Console.WriteLine("Ім'я = {0}, Вік = {1}, Статус = {2}", name, age, status); }//SetStatus
Цей приклад демонструє коректний стиль використання оператора switch.
Переглядів: 2072 |