switch
int choice = 2; сохраняет целое число 2. Затем switch (choice) сравнивает это число с фиксированными метками. Когда choice равно 2, выполняется case 2 и Console.WriteLine("mid") пишет mid. Экран — одна строка. Оставьте имя публичного класса Pine.
Одно значение, несколько фиксированных меток
Откройте файл Pine. Имя класса остаётся Pine. Эта страница не переименовывает тип. Удалите bool ready, если эта строка ещё есть, включая if (ready), pass, wait и каждый блок else с предыдущей страницы. Удалите bool both, если эта строка ещё есть. Удалите любую строку ReadLine. В файле, который вы оставляете, нет ожидания ввода, нет ready и нет развилки if / else. Экран пишет только строка вывода под совпавшим case или под default.
Внутри Main сохраните целое число до switch: int choice = 2;. int — слово вида. choice — имя, и оно начинается с маленькой c. Вокруг 2 нет кавычек. Точка с запятой завершает строку сохранения. Эта строка не пишет экран. После неё идёт сам switch:
switch (choice) {
case 1:
Console.WriteLine("low");
break;
case 2:
Console.WriteLine("mid");
break;
case 3:
Console.WriteLine("high");
break;
default:
Console.WriteLine("none");
break;
}
Слово switch строчными буквами. В круглых скобках стоит имя choice — значение, которое C# сравнит с каждой меткой case. Каждая строка case заканчивается двоеточием, а не точкой с запятой. Под case 2 стоит Console.WriteLine("mid");, затем слово break и точка с запятой. Когда choice хранит 2, C# входит в case 2, пишет mid, доходит до break и выходит из всего switch. case 3 и default на этом запуске не выполняются. Сохраните файл.
Файл, который вы оставляете
Оставьте эту учебную форму. Одно слово вида — int. Одно имя — choice, сохранённое как 2. Один switch с круглыми скобками вокруг choice. Метки 1, 2 и 3, каждая со строкой вывода и break. Один default, который пишет none. Нет строки ready, нет if и нет голой печати цифры 2 вне case.
using System;
public class Pine
{
public static void Main()
{
int choice = 2;
switch (choice)
{
case 1:
Console.WriteLine("low");
break;
case 2:
Console.WriteLine("mid");
break;
case 3:
Console.WriteLine("high");
break;
default:
Console.WriteLine("none");
break;
}
}
}
Читайте сверху. using System; готовит короткие имена. public class Pine именует тип. public static void Main() — место, где стартует среда выполнения. int choice = 2; сохраняет 2. Ничего не пишет. switch (choice) начинает сравнение. case 2 совпадает, поэтому выполняется Console.WriteLine("mid");, затем break; выходит из switch. На экране одна строка: mid. Без кавычек на экране. Без второй строки. В файле, который вы оставляете, нет строки bool ready.
Запустите dotnet run. Программа пишет mid. Она не ждёт, пока вы введёте текст. Сохранённое число и switch уже были в файле. Если dotnet run ждёт, в файле ещё есть ReadLine. Удалите эту строку и оставьте int choice = 2; и тот же switch выше. Программа заканчивается после выбранной строки вывода. Экран показывает mid. Одна строка. Если экран показывает 2, вы всё ещё печатаете само число. Если экран показывает pass или wait, файл if / else ещё на месте. Удалите развилку ready. Если экран показывает none, choice — значение, которое не совпадает ни с одним case — это второй файл на этой странице, а не файл, который вы оставляете. Если экран показывает буквы switch (choice), в строке вывода эти символы в кавычках. Вы не переустанавливаете .NET SDK из‑за экрана с неправильной строкой.
Почему mid, а не low или high? Потому что значение в круглых скобках было 2, и case 2 — метка, которая совпадает. C# на этом запуске не пишет цифру 2, если вы сами не напишете строку вывода для этой цифры. Он пишет ту строку вывода, которая выполняется под совпавшим case. Круглые скобки держат сравниваемое значение. Каждая метка case здесь — фиксированное целое число. break завершает switch, чтобы следующие case остались тихими. default ждёт значений, которые не совпадают ни с одним case — он не используется, пока choice равно 2.
Когда ни один case не совпадает
Измените только сохранённое значение: int choice = 9;. Структуру switch оставьте как есть. Теперь ни case 1, ни case 2, ни case 3 не совпадают. C# переходит к default и выполняет Console.WriteLine("none");. Экран должен показать none, одна строка.
using System;
public class Pine
{
public static void Main()
{
int choice = 9;
switch (choice)
{
case 1:
Console.WriteLine("low");
break;
case 2:
Console.WriteLine("mid");
break;
case 3:
Console.WriteLine("high");
break;
default:
Console.WriteLine("none");
break;
}
}
}
Это второй файл. Это не файл, который вы оставляете. Запустите dotnet run. Экран показывает none. Одна строка. Он не показывает mid. Он не показывает 9, если вы сами не напечатали эту цифру. Если экран показывает mid, вы всё ещё на файле, который оставляете, где choice равно 2. После того как увидели none, верните оставляемый файл: int choice = 2; и тот же switch, который на case 2 пишет mid. Обе версии — допустимый C#. Они учат одну и ту же форму switch с совпавшим case и с default.
Прочитайте запуск default ещё раз по порядку. choice хранит 9. Задаётся switch (choice). case 1 не совпадает. case 2 не совпадает. case 3 не совпадает. Управление продолжается на default. Выполняется Console.WriteLine("none");. На экране одна строка. Сама цифра 9 не появляется, если вы не печатаете её намеренно.
break останавливает следующие case
break — не украшение. Без него C# после совпадения может продолжить выполнять строки следующего case. Этот fall-through удивляет новичков. Вот короткий демо, который нарочно забывает break после case 2 — это не файл, который вы оставляете:
using System;
public class Pine
{
public static void Main()
{
int choice = 2;
switch (choice)
{
case 1:
Console.WriteLine("low");
break;
case 2:
Console.WriteLine("mid");
case 3:
Console.WriteLine("high");
break;
default:
Console.WriteLine("none");
break;
}
}
}
При choice равном 2 и без break под case 2 экран может показать mid на одной строке и high на следующей. case 2 совпал, написал mid, затем упал в case 3 и написал high. Файл, который вы оставляете, ставит break под каждым case, чтобы каждый путь писал ровно одну строку. Верните break, прежде чем снова считать файл Pine оставляемым учебным файлом.
Правила, которые держат метки ясными
Круглые скобки вокруг переключаемого значения обязательны. Запись switch choice { … } без круглых скобок заставляет сборку писать ошибку. Каждая метка case на этой странице — константа целого числа: case 1:, case 2:, case 3:. После метки идёт двоеточие. Запись case 2; с точкой с запятой вместо двоеточия — не та форма, которую строит этот урок. У default после себя нет значения — только default:, затем строки для «ничего не совпало».
switch — не тот же инструмент, что if. if (ready) задаёт вопрос true или false. switch (choice) сопоставляет одно значение со списком фиксированных меток. Не пишите switch (ready) с bool и не ждите той же учебной формы, что на предыдущей странице. Демо этой страницы держите на int с именем choice и метках целых чисел. Сравнения вроде if (score > 10) по‑прежнему принадлежат if, когда нужен диапазон; switch сияет, когда значения дискретны и известны заранее.
Частая путаница — печатать сам синтаксис: Console.WriteLine("switch (choice)");. Это пишет символы switch (choice). Case не выбирается. Другая путаница — оставить демо if / else в том же Main и удивляться, почему экран показывает pass вместо mid. В Main этой сессии должны быть только int и switch.
📊 choice and the screen
| choice | Screen |
|---|---|
| 1 | low |
| 2 | mid |
| 3 | high |
| 9 | none |
Таблицу используйте как проверку после запуска, а не вместо него. choice 2 с файлом, который вы оставляете, пишет mid. choice 9 со вторым файлом пишет none. choice 1 пишет low. choice 3 пишет high. Если для choice 2 появляются и mid, и high, под case 2 пропущен break — исправьте break, а не переустанавливайте .NET SDK.
Теперь вы можете сохранить целое число, поставить его в switch (…), и дать каждому фиксированному значению свой case со строкой вывода и break. Когда case совпадает, выполняется эта строка; когда ничего не совпало, выполняется default. Следующая страница — for, где тот же блок строк может выполняться снова и снова, пока меняется счётчик.
Экран — совпавший case
Файл, который вы оставляете, пишет mid. Имя choice стоит в круглых скобках, и choice на экране нет. Цифра 2 стоит в строке сохранения, и 2 на экране нет. Другие case есть в файле, и на оставляемом запуске они не выполняются. Кавычки вокруг switch (choice) пишут буквы, а не совпавший case.
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху