В отношении оператора 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.
Читать дальше