Загрузка...

break и continue

Цикл i от 1 до 5. Когда i равен 3, выйдите из цикла через break до строки вывода. Экран должен показать только две строки: 1, затем 2. Эта ранняя остановка — один инструмент на этой странице. Другой инструмент — continue: он пропускает один проход и затем продолжает цикл, так что 3 не пишется, а 4 и 5 всё ещё пишутся. Оставьте имя публичного класса Pine.

break рано заканчивает цикл

Откройте файл Pine. Имя класса остаётся Pine. Эта страница не переименовывает тип. Удалите любой простой while, который только считает, если эта форма ещё есть. Удалите простой for без if для ранней остановки, если хотите оставить только демо этой страницы. Удалите любую строку ReadLine. В файле, который вы оставляете, нет ожидания ввода, а экран пишет только строка вывода, которая выполняется, когда if даёт false.

Внутри Main напишите for, который может остановиться рано:
for (int i = 1; i <= 5; i = i + 1) {
if (i == 3) {
break;
}
Console.WriteLine(i);
}
Заголовок for — та же форма, что вы уже знаете: старт, проверка, шаг. Внутри фигурных скобок if спрашивает, равен ли i числу 3. Когда это true, выполняется break;. break сразу покидает весь цикл for. Строка вывода под if на этом проходе не выполняется, и i внутри этого цикла не доходит до 4 или 5. Когда i равен 1 или 2, if даёт false, поэтому Console.WriteLine(i) пишет число. Сохраните файл.

Файл, который вы оставляете

Оставьте эту учебную форму. Один for от 1 до 5. Один if (i == 3), который выполняет break;. Одна строка вывода после if, которая пишет голое имя i. В файле, который вы оставляете, нет continue и нет кавычек вокруг break.

break when i is 3

csharp
using System;

public class Pine
{
    public static void Main()
    {
        for (int i = 1; i <= 5; i = i + 1)
        {
            if (i == 3)
            {
                break;
            }
            Console.WriteLine(i);
        }
    }
}

Читайте сверху. using System; готовит короткие имена. public class Pine именует тип. public static void Main() — место, где стартует среда выполнения. for ведёт i от 1 к 5. Когда i равен 3, break; заканчивает цикл. На экране две строки: 1, затем 2. Третьей строки нет.

Запустите dotnet run. Программа пишет две строки и останавливается. Она не ждёт, пока вы введёте текст. Если dotnet run ждёт, в файле ещё есть ReadLine. Удалите эту строку и оставьте for с break выше. Экран показывает 1, затем 2. Если экран показывает пять строк, break отсутствует или if никогда не совпадает. Если экран показывает слово break буквами, в строке вывода стоят кавычки вокруг этого слова. Вы не переустанавливаете .NET SDK из‑за экрана с неправильными строками.

Пройдите запуск с break по порядку. i начинается с 1. if даёт false, поэтому строка вывода пишет 1. Шаг сохраняет 2. if даёт false, поэтому строка вывода пишет 2. Шаг сохраняет 3. Теперь i == 3 даёт true, поэтому выполняется break и for заканчивается. Для 3, 4 или 5 ничего не пишется. Простой цикл без break написал бы пять строк; break обрезал цикл после двух выводов. После break на этом проходе шаг не выполняется, и проверка больше не задаётся, потому что цикл уже закончен.

continue пропускает один проход

Измените тело так, чтобы continue заменил break, и оставьте строку вывода после if:
for (int i = 1; i <= 5; i = i + 1) {
if (i == 3) {
continue;
}
Console.WriteLine(i);
}
Когда i равен 3, continue; пропускает остаток этого прохода — включая строку вывода — и for переходит к шагу и следующей проверке. Сам цикл не заканчивается. Экран должен показать четыре строки: 1, 2, 4 и 5. Дыра — там, где был бы 3.

continue when i is 3

csharp
using System;

public class Pine
{
    public static void Main()
    {
        for (int i = 1; i <= 5; i = i + 1)
        {
            if (i == 3)
            {
                continue;
            }
            Console.WriteLine(i);
        }
    }
}

Это второй файл. Это не файл, который вы оставляете. Запустите dotnet run. Экран показывает четыре строки. Заголовок for вы не меняли — только break стал continue. После того как увидели четыре строки, верните оставляемый файл: break внутри if. Обе версии — допустимый C#. Они учат два разных ранних хода внутри одной и той же формы цикла.

Прочитайте запуск с continue ещё раз. i идёт 1, 2, 3, 4, 5. Для 1 и 2 if даёт false и числа пишутся. Для 3 continue пропускает строку вывода. Для 4 и 5 числа снова пишутся. Цикл всё ещё заканчивается обычной остановкой, когда i становится 6. continue никогда не заканчивает for; он только пропускает остаток одного прохода. После continue for всё ещё выполняет свой шаг i = i + 1, поэтому счётчик двигается даже если этот проход ничего не написал.

📊 tool and the screen

Tool at i == 3 Screen
break 1 then 2
continue 1 then 2 then 4 then 5

Используйте таблицу как проверку после запуска, а не вместо него. break оставляет две строки. continue оставляет четыре строки без 3. Если 3 всё ещё появляется, когда вы хотели continue, строка вывода, скорее всего, стоит над if — перенесите Console.WriteLine(i) ниже continue, чтобы пропуск мог её достичь. Исправьте порядок, а не переустанавливайте .NET SDK.

Правила, которые держат два инструмента ясными

break и continue принадлежат телу цикла. Запись break; в одиночку в Main без охватывающего for или while заставляет сборку писать ошибку. То же верно для continue;. На этой странице if выбирает момент: когда i равен 3. Позже вы можете писать другие проверки; демо держат i == 3, чтобы изменение экрана было легко увидеть.

break — не continue. break заканчивает цикл. continue пропускает один проход и остаётся в цикле. break внутри switch на более ранней странице заканчивает case; здесь охватывающая структура — for. Не оставляйте простой while, который только считает, или простой for без if, в том же Main и не удивляйтесь, почему каждое число от 1 до 5 всё ещё пишется. В Main этой сессии должны быть for плюс if с break или continue.

Частая путаница — писать само слово: Console.WriteLine("break");. Это пишет символы break. Цикл это не останавливает. Другая путаница — поставить Console.WriteLine(i); перед if, который держит continue, так что 3 всё ещё пишется, а затем continue выполняется, когда пропускать уже нечего. В обоих демо держите строку вывода после if. Если написать continue без охватывающего цикла, сборка пишет ошибку; то же для одинокого break вне любого цикла. Эти два слова на форме этого урока имеют смысл только внутри тела цикла.

Теперь вы можете поставить break внутри цикла, чтобы выйти рано, или continue, чтобы пропустить один проход и идти дальше. if может выбрать, когда это случится. Следующая страница — foreach, где цикл проходит каждое значение в коллекции без того, чтобы писать старт, проверку и шаг вручную тем же способом.

Экран — ранний ход

Файл, который вы оставляете, пишет 1, затем 2. Слово break стоит в файле, а на экране break нет. Второй файл пишет четыре строки без 3. Кавычки вокруг break пишут буквы, а не раннюю остановку.

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Свои Знания

Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему

❓
5
Вопросы
🎯
70%
Для Прохождения
♾️
∞
Время
🔄
∞
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху