В отношении оператора breakнеобходимо также иметь в виду следующее. Во-первых, в теле цикле может присутствовать несколько операторов break, но применять их следует очень аккуратно, поскольку чрезмерное количество операторов breakобычно приводит к нарушению нормальной структуры кода. И во-вторых, оператор break, выполняющий выход из оператора switch, оказывает воздействие только на этот оператор, но не на объемлющие его циклы.
Применение оператора continue
С помощью оператора continueможно организовать преждевременное завершение шага итерации цикла в обход обычной структуры управления циклом. Оператор continue осуществляет принудительный переход к следующему шагу цикла, пропуская любой код, оставшийся невыполненным. Таким образом, оператор continueслужит своего рода дополнением оператора break. В приведенном ниже примере программы оператор continueиспользуется в качестве вспомогательного средства для вывода четных чисел в пределах от 0 до 100.
// Применить оператор continue,
using System;
class ContDemo {
static void Main() {
// вывести четные числа от 0 до 100.
for (int i = 0; i <= 100; i++) {
if((i%2) != 0) continue; // перейти к следующему шагу итерации
Console.WriteLine(i);
}
}
}
В данном примере выводятся только четные числа, поскольку при обнаружении нечетного числа шаг итерации цикла завершается преждевременно в обход вызова метода WriteLine().
В циклах whileи do-whileоператор continueвызывает передачу управления непосредственно условному выражению, после чего продолжается процесс выполнения цикла. А в цикле forсначала вычисляется итерационное выражение, затем условное выражение, после чего цикл продолжается.
Оператор continueредко находит удачное применение, в частности, потому, что в C# предоставляется богатый набор операторов цикла, удовлетворяющих большую часть прикладных потребностей. Но в тех особых случаях, когда требуется преждевременное прерывание шага итерации цикла, оператор continueпредоставляет структурированный способ осуществления такого прерывания.
Оператор return
Оператор returnорганизует возврат из метода. Его можно также использовать для возврата значения. Более подробно он рассматривается в главе 6.
Имеющийся в C# оператор gotoпредставляет собой оператор безусловного перехода. Когда в программе встречается оператор goto, ее выполнение переходит непосредственно к тому месту, на которое указывает этот оператор. Он уже давно "вышел из употребления" в программировании, поскольку способствует созданию "макаронного" кода. Тем не менее оператор gotoвсе еще находит применение — иногда даже эффективное. В этой книге не делается никаких далеко идущих выводов относительно правомочности использования оператора gotoдля управления программой. Следует, однако, подчеркнуть, что этому оператору трудно найти полезное применение, и поэтому он не особенно нужен для полноты языка программирования. Хотя в некоторых случаях он оказывается удобным и дает определенные преимущества, если используется благоразумно. В силу этих причин оператор gotoупоминается только в данном разделе книги. Главный недостаток оператора gotoс точки зрения программирования заключается в том, что он вносит в программу беспорядок и делает ее практически неудобочитаемой. Но иногда применение оператора gotoможет, скорее, прояснить, чем запутать ход выполнения программы.
Для выполнения оператора gotoтребуется метка — действительный в C# идентификатор с двоеточием. Метка должна находиться в том же методе, где и оператор goto, а также в пределах той же самой области действия. В приведенном ниже примере программы цикл суммирования чисел от 1 до 100 организован с помощью оператора gotoи соответствующей метки.
х = 1;
loopl: х++;
if(х < 100) goto loopl;
Кроме того, оператор gotoможет быть использован для безусловного перехода к ветви caseили defaultв операторе switch. Формально ветви caseили defaultвыполняют в операторе switchроль меток. Поэтому они могут служить адресатами оператора goto. Тем не менее оператор gotoдолжен выполняться в пределах оператора switch. Это означает, что его нельзя использовать как внешнее средство для безусловного перехода в оператор switch. В приведенном ниже примере программы демонстрируется применение оператора gotoв операторе switch.
Читать дальше