Вправа – впроваджувати інструкцію-перемикач
- 11 хвилин
Оператор switch – це інструкція вибору C#, яка забезпечує альтернативу побудові розгалуження if-elseif-else . Інструкція switch надає переваги над конструкцією if-elseif-else під час обчислення одного значення зі списком відомих відповідних значень.
Розглянемо такий сценарій.
- Ви працюєте над програмою, пов'язаною з харчовим харчуванням. Розділ коду стосується фруктів.
- Код містить змінну з іменем
fruit, яка використовується для утримання назви різних типів фруктів. - У вас є список з 20 фруктів, які ваша програма орієнтована на.
- Ви хочете розгалуження коду на основі значення, призначеного
fruit.
У цьому сценарії можна використовувати інструкцію switch , щоб створити окрему гілку для кожного типу фруктів.
Як працює оператор переходу?
Інструкція switch вибирає один розділ коду для виконання зі списку можливих розділів перемикачів. Вибраний розділ перемикача вибирається на основі шаблону, який відповідає виразу відповідності оператору.
Розглянемо наведений нижче зразок коду, який відображає базову структуру інструкції switch :
switch (fruit)
{
case "apple":
Console.WriteLine($"App will display information for apple.");
break;
case "banana":
Console.WriteLine($"App will display information for banana.");
break;
case "cherry":
Console.WriteLine($"App will display information for cherry.");
break;
}
Вираз зіставлення (який також може називатися виразом перемикача) – це значення, яке слідкує за switch ключовим словом, у цьому випадку (fruit). Кожен розділ перемикача визначається шаблоном інциденту. Шаблони інцидентів побудовано з використанням ключового слова case з подальшим значенням. Перший шаблон у цьому прикладі: case "apple":. Шаблони інцидентів – це логічні вирази, які обчислюються для або truefalse. Кожен розділ перемикача містить невелику кількість рядків коду, які виконуватимуться, якщо шаблон інциденту відповідає виразу відповідності. У цьому прикладі, якщо fruit йому призначено значення "яблуко", перший шаблон інциденту буде оцінено як true і що розділ перемикача буде виконано.
Оператор-перемикач має містити принаймні один розділ перемикача, але зазвичай міститиме три або більше розділів перемикачів.
Перемикач найкраще використовувати, якщо:
- У вас є одне значення (змінна або вираз), яке потрібно зіставити з багатьма можливими значеннями.
- Для будь-якого відповідного збігу потрібно виконати кілька рядків коду.
Примітка
Цей перший приклад switch твердження є цілеспрямовано простим, а ваш огляд синтаксису був коротким. Під час роботи з деякими розширеними сценаріями в розділах нижче ви вивчите додаткові функції switch оператора.
Настав час підготувати середовище кодування та почати розробляти власні switch заяви.
Підготовка середовища кодування
Цей модуль містить практичні дії, які допоможуть вам побудувати та запустити демонстраційний код. Ми рекомендуємо вам виконати ці дії, використовуючи Visual Studio Code як середовище розробки. Використання коду Visual Studio для цих дій допоможе вам стати більш зручним написанням і виконанням коду в середовищі розробників, яке використовують професіонали по всьому світу.
Відкрийте Код Visual Studio.
Щоб відкрити код Visual Studio, можна скористатися меню "Пуск" Windows (або еквівалентним ресурсом для іншої ОС).
У меню Код Visual Studio Файл виберіть Відкрити папку.
У діалоговому вікні Відкрити папку перейдіть до папки "Робочий стіл Windows".
Якщо у вас є інше розташування папки, де зберігаються проекти коду, натомість можна використовувати це розташування папки. Для цього навчання важливо мати розташування, яке легко знайти та запам'ятати.
У діалоговому вікні Відкрити папку виберіть Вибрати папку.
Якщо з'явиться діалогове вікно безпеки з запитанням, чи довіряєте ви авторам, виберіть Так.
У меню коду Visual Studio Code виберіть Новий термінал.
Зверніть увагу, що в командному рядку на панелі терміналів відображається шлях до папки для поточної папки. Наприклад:
C:\Users\someuser\Desktop>Примітка
Якщо ви працюєте на власному ПК, а не в ізольованому середовищі або в розміщеному середовищі, а завершили інші модулі Microsoft Learn у цій серії C# , можливо, ви вже створили папку проекту для зразків коду. У такому разі можна пропустити наступний крок, який використовується для створення консолі в папці TestProject.
У командному рядку термінала, щоб створити нову програму консолі в указаній папці, введіть такий запит:
dotnet new console -o ./CsharpProjects/TestProjectЦя команда .NET CLI використовує шаблон програми .NET для створення нового проекту програми консолі C# у вказаному розташуванні папки. Ця команда створює папки CsharpProjects і TestProject і використовує TestProject як ім'я
.csprojфайлу.Якщо відображається повідомлення про те, що файли вже існують, виконайте наступні кроки. Ви повторно використовуватимете наявні файли проекту.
У поданні EXPLORER розгорніть папку CsharpProjects .
Має відобразитися папка TestProject і два файли, файл програми C# з іменем Program.cs і файл проекту C# з іменем TestProject.csproj.
У меню Код Visual Studio Файл виберіть Відкрити папку.
У діалоговому вікні Відкрити папку виберіть папку CsharpProjects , а потім натисніть кнопку Вибрати папку.
У поданні EXPLORER розгорніть папку TestProject і виберіть Program.cs.
Видалення наявних рядків коду.
Ви використовуватимете цей проект консолі C# для створення, створення та виконання зразків коду під час цього модуля.
Закрийте панель терміналів.
Створення та перевірка оператора перемикача
Переконайтеся, що на панелі "Редактор" відкрито код Visual Studio Code і Program.cs.
Примітка
Program.cs має бути пустим. Якщо це не так, виберіть і видаліть усі рядки коду.
Введіть такий код у редактор коду Visual Studio:
int employeeLevel = 200; string employeeName = "John Smith"; string title = ""; switch (employeeLevel) { case 100: title = "Junior Associate"; break; case 200: title = "Senior Associate"; break; case 300: title = "Manager"; break; case 400: title = "Senior Manager"; break; default: title = "Associate"; break; } Console.WriteLine($"{employeeName}, {title}");У меню Файл код Visual Studio Code виберіть Зберегти.
Перед створенням або запуском коду необхідно зберегти файл Program.cs.
На панелі EXPLORER, щоб відкрити термінал у розташуванні папки TestProject, клацніть правою кнопкою миші TestProject , а потім виберіть Відкрити в інтегрованому терміналі.
Відкриється панель терміналів. Термінал має містити командний рядок, який показує, що термінал відкрито в папці TestProject.
У командному рядку термінала, щоб запустити код, введіть dotnet виконати і натисніть клавішу Enter.
Примітка
Якщо відображається повідомлення "Не вдалося знайти проект для запуску", переконайтеся, що в командному рядку термінала відображається очікуване розташування папки TestProject. Наприклад:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Ви побачите такий результат:
John Smith, Senior AssociateЗнайдіть хвилинку, щоб переглянути введену інструкцію
switch.Зверніть увагу, що інструкція
switchвизначає єдиний блок коду.Інструкція
switchвизначає єдиний блок коду, який містить список розділів перемикачів. Праворуч від ключовогоswitchслова розташовано вираз-перемикач , узятий у дужки.Зверніть увагу на список розділів перемикачів у блоці коду.
Блок
switchкоду містить список розділів перемикачів, кожен із яких містить одну або кілька перемикачів. Крім того, кожен розділ перемикача містить список інструкції, який виконуватиметься, якщо підпис дорівнює виразу перемикача, визначеному у верхній частині інструкції перемикача.Вираз перемикача обчислюється відносно підписів інцидентів згори вниз, доки не буде знайдено значення, рівне виразу перемикача. Якщо жодна з етикеток не збігається, буде виконано список інструкції для інциденту
default. Якщо за замовчуванням не включено, елемент керування передається до кінцевої точки оператора перемикача. Кожна етикетка має містити тип значення, який відповідає типу, указаному у виразі перемикача.Примітка
Необов'язковий
defaultпідпис може відображатися в будь-якій позиції в списку розділів перемикачів. Однак більшість розробників вирішили поставити його останнім, тому що є більше сенсу (логічно) позиціонуватиdefaultяк остаточний варіант. Незалежно від позиції,defaultрозділ буде оцінено останнім.У нашому прикладі:
- вираз перемикача
(employeeLevel) - кожен розділ перемикача має один перемикач (
caseабоdefault). - розділ відповідного перемикача визначається
case: 200, оскількиemployeeLevel = 200.
- вираз перемикача
Зверніть увагу, що кожний розділ перемикача відокремлено від наступного.
Дозволено виконувати лише один розділ перемикачів. Це означає, що виконання переключення розділу не дозволяється "пройти" до наступного розділу перемикача. Ключове
breakслово – це один із кількох способів завершення переключення розділу, перш ніж перейти до наступного розділу. Якщо ви забудетеbreakключове слово (або, за потреби,returnключове слово), компілятор створить помилку.
Змінення значення змінної рівня, щоб побачити, як його оцінює оператор перемикача
Щоб скористатися стандартним випадком, давайте змінимо рівень працівника, змінивши призначення значення.
Щоб змінити значення, призначене
employeeLevel, оновіть код таким йому:int employeeLevel = 201;Збережіть кодовий файл, а потім за допомогою коду Visual Studio запустіть код.
Введіть у
dotnet runкомандному рядку термінала, щоб запустити код.Зверніть увагу, що результат змінився.
Тепер, коли ви запускаєте код, ви побачите більш загальний заголовок, який використовується.
John Smith, AssociateemployeeLevelОскільки підпис не відповідає жоднійdefaultетикетці, вона збігається.
Змінення розділу перемикача для додавання кількох підписів
Припустімо, наша компанія вирішила надати всім співробітникам 100 рівня звання "Старший юрист" - таке ж звання, що й працівники 200 рівня. Як розробник, ви вирішили реалізувати це, видаливши перший розділ перемикача, що належить до етикетки case 100:, і замість цього дозвольте і case 100:case 200: етикеткам виконувати один і той же розділ перемикача.
Щоб змінити значення, призначене
employeeLevel, оновіть код таким йому:int employeeLevel = 100;Щоб призначити кілька етикеток першому розділу перемикача, оновіть код, як описано нижче.
case 100: case 200: title = "Senior Associate"; break;Після завершення внесення змін зміни мають відповідати такому коду:
int employeeLevel = 100; string employeeName = "John Smith"; string title = ""; switch (employeeLevel) { case 100: case 200: title = "Senior Associate"; break; case 300: title = "Manager"; break; case 400: title = "Senior Manager"; break; default: title = "Associate"; break; } Console.WriteLine($"{employeeName}, {title}");Збережіть кодовий файл, а потім за допомогою коду Visual Studio запустіть код.
Введіть у
dotnet runкомандному рядку термінала, щоб запустити код.Ви побачите такий результат:
John Smith, Senior AssociateОбидва підписи
100інцидентів і200тепер з'єднано з розділом перемикача, який задає заголовку значенняSenior Associateрядка .
Коротко
Ось основні виноси, які ви дізналися про інструкцію перемикача:
- Використайте інструкцію,
switchякщо маєте одне значення з багатьма можливими збігами, кожен збіг вимагає відгалуження в кодову логіку. - Розділ єдиного перемикача, що містить кодову логіку, можна зіставити за допомогою однієї або кількох підписів, визначених
caseключовим словом. - Використовуйте необов'язкове
defaultключове слово, щоб створити підпис і розділ перемикача, які використовуватимуться, коли жодні інші підписи інцидентів не збігаються.
Перевірка знань
Зворотний зв’язок
Чи була ця сторінка корисна?
Ні
Потрібна допомога із цією темою?
Хочете скористатися Ask Learn, щоб отримати пояснення чи інструкції із цієї теми?