русс | укр

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.

 

Переглядів: 1809






© 2012 ci-sharp.ru При використанні матеріалу пряме iндексуюче посилання на сайт ОБОВ'ЯЗКОВЕ.
Права строго захищені нормами міжнародного права, інтелектуальної власності та авторського права.