Иногда случаются случаи, когда цикл должен выполнить определённую задачу и прекратить свою работу, поскольку дальнейшее его выполнение не несёт никакой пользы, а только добавляет ненужно количество инструкций для выполнения (Вы не можете предугадать точное количество необходимых итераций, а можете сказать только максимальное их количество).
Рассмотрим это на простом примере:
У нас есть список чисел {1, 3, 167, 65, 255}
, и нам нужно приходясь по этому списку найти число 65
(изначально мы не знаем его позиции в списке). Количество итераций цикла для прохождения по этому списку будет равно 5
, но 5
итерация не будет нам нужна для выполнения, поскольку на 4
итерации мы уже найдём число 65
. Поэтому нам нужно прервать работу цикла после нахождения данного числа.
Для этого можно использовать goto
и перейти на метку находящуюся вне цикла, но это плохой вариант, ведь желательно по возможности избегать использования goto
. Соответственно вместо goto
мы можем использовать оператор break
, который и укажет процессору, что дальше выполнять наш цикл ненужно, а нужно выполнить инструкции после цикла.
Реализация примера:
int[] list = { 1, 3, 167, 65, 255 }; // наш список чисел
for (int i = 0; i < list.Length; i++) // list.Length - укажет количество элементов в списке
{
if (list[i] == 65) // list[i] - обращается к элементу в списке (начиная с элемента 0, который равен 1)
{
Console.WriteLine("число 65 найдено");
break;
}
Console.WriteLine(i);
}
Команда досрочного выхода из цикла break, применяется тогда, когда необходимо прервать выполнение цикла, в котором условие выхода еще не достигнуто. Работу цикла есть смысл прерывать, если, например, при выполнении тела цикла, обнаруживается ошибка, после которой дальнейшее выполнение цикла не имеет смысла.
Оператор досрочного выхода из цикла break
, применяется только для того цикла в котором он непосредственно находится.
Примечание: применение оператора break
в цикле без использования условных конструкций бессмысленно, ведь код после них никогда не выполнится, а количество итераций цикла всегда будет равно 1
, что эквивалентно простому написании кода до break в программе без цикла.
Оператор break
можно использовать во всех видах циклов.
Напоминание
Неструктурные средства безусловных переходов: goto
, break
, continue
. С точки зрения структурного программирования, команды досрочного выхода из цикла и продолжения итерации считаются избыточными. Нужно стараться моделировать их действия чисто структурными средствами – условиями и циклами.
Несмотря на свою ограниченную полезность и возможность замены на другие языковые конструкции, команды пропуска итерации и, особенно, досрочного выхода из цикла в отдельных случаях оказываются полезны, именно поэтому они сохраняются в C# и других современных языках программирования.
Источник: видеоурок Александра Шевчука "ВИДЕОУРОК №6. ЦИКЛИЧЕСКИЕ КОНСТРУКЦИИ".