|
Применение оператора break для выхода из цикла C# Полное руководство Герберт Шилдт
|
С помощью оператора break можно специально организовать немедленный выход из цикла в обход любого кода, оставшегося в теле цикла, а также проверки условия цикла. Когда в теле цикла встречается оператор break, цикл завершается, а выполнение программы возобновляется с оператора, следующего после этого цикла. Рассмотрим простой пример программы:
// Применить оператор break для выхода из цикла.
using System;
class BreakDemo { static void Main() {
// Использовать оператор break для выхода из этого цикла. for (int i=-10; i <= 10; i++) { if(i > 0) break; // завершить цикл, как только // значение переменной i станет положительным Console .Write (i + " "); } Console.WriteLine("Готово!"); } }
Выполнение этой программы дает следующий результат: -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 Готово! Как видите, цикл for организован для выполнения в пределах от -10 до 10, но, несмотря на это, оператор break прерывает его раньше, когда значение переменной i становится положительным. Оператор break можно применять в любом цикле, предусмотренном в С#. В качестве примера ниже приведена версия предыдущей программы, переделанная с целью использовать цикл do-while.
// Применить оператор break для выхода из цикла do-while.
using System;
class BreakDemo2 { static void Main() { int i;
i = -10; do { if(i > 0) break; Console.Write(i + " "); i++; } whiled <= 10) ;
Console.WriteLine("Готово!") ; } }
А теперь рассмотрим более практический пример применения оператора break. В приведенной ниже программе выявляется наименьший множитель числа.
// Выявить наименьший множитель числа
using System;
class FindSmallestFactor { static void Main() { int factor = 1; int num = 1000;
for(int i=2; i <= num/i; i++) { if((num%i) ==0) { factor = i; break; // прервать цикл, как только будет // выявлен наименьший множитель числа } }
Console.WriteLine("Наименьший множитель равен " + factor); } }
Результат выполнения этой программы выглядит следующим образом: Наименьший множитель равен 2 Оператор break прерывает выполнение цикла for, как только будет выявлен наименьший множитель числа. Благодаря такому применению оператора break исключается опробование любых других значений после выявления наименьшего множителя числа, а следовательно, и неэффективное выполнение кода. Если оператор break применяется в целом ряде вложенных циклов, то он прерывает выполнение только самого внутреннего цикла. В качестве примера рассмотрим следующую программу:
// Применить оператор break во вложенных циклах, using System;
class BreakNested { static void Main() {
for(int i=0; i<3; i++) { Console.WriteLine("Подсчет во внешнем цикле: " + i) ; Console.Write("Подсчет во внутреннем цикле: ");
int t = 0; while (t < 100) { if (t == 10) break; // прервать цикл, если // t равно 10 Console.Write(t + " "); t++; } Console.WriteLine(); } Console.WriteLine("Циклы завершены."); } }
Выполнение этой программы дает следующий результат: Подсчет во внешнем цикле: 0 Подсчет во внутреннем цикле: 0123456789 Подсчет во внешнем цикле: 1 Подсчет во внутреннем цикле: 0123456789 Подсчет во внешнем цикле: 2 Подсчет во внутреннем цикле: 0123456789 Циклы завершены Как видите, оператор break из внутреннего цикла вызывает прерывание только этого цикла. А на выполнение внешнего цикла он не оказывает никакого влияния. В отношении оператора break необходимо также иметь в виду следующее. Во-первых, в теле цикле может присутствовать несколько операторов break, но применять их следует очень аккуратно, поскольку чрезмерное количество операторов break обычно приводит к нарушению нормальной структуры кода. И во-вторых, оператор break, выполняющий выход из оператора switch, оказывает воздействие только на этот оператор, но не на объемлющие его циклы.
|
|
|