Console.WriteLine('В ветви case 3'); goto default; default:
Console.WriteLine('В ветви default'); break;
}
Console.WriteLine();
}
// goto case 1; // Ошибка! Безусловный переход к оператору switch недопустим.
}
}
Вот к какому результату приводит выполнение этой программы.
В ветви case 1 В ветви case 3 В ветви default
В ветви case 2 В ветви case 1 В ветви case 3 В ветви default
В ветви case 3 В ветви default
В ветви default
Обратите внимание на то, как оператор goto используется в операторе switch для перехода к другим его ветвям case или к ветви default. Обратите также внимание на то, что ветви case не оканчиваются оператором break. Благодаря тому что оператор goto препятствует последовательному переходу от одной ветви case к другой, упоминавшееся ранее правило недопущения 'провалов' не нарушается, а следовательно, необходимость в применении оператора break в данном случае отпадает. Но как пояснялось выше, оператор goto нельзя использовать как внешнее средство для безусловного перехода к оператору switch. Так, если удалить символы комментария в начале следующей строки:
// goto case 1; // Ошибка! Безусловный переход к оператору switch недопустим.
приведенная выше программа не будет скомпилирована. Откровенно говоря, применение оператора goto в операторе switch, в общем, не рекомендуется как стиль программирования, хотя в ряде особых случаев это может принести^определенную пользу.
Ниже приведен один из полезных примеров применения оператора goto для выхода из глубоко вложенной части программы.
// Продемонстрировать практическое применение оператора goto.
using System;
class Use_goto {
static void Main() { int i=0, j=0, k=0;
for(i=0; i < 10; i++) {
for(j=0; j < 10; j++ ) { for(k=0; k < 10; k++) {
Console.WriteLine ('i, j, k: ' + i + ' ' + j +
' ' + k) ; if(k == 3) goto stop;
}
}
}
stop:
Console.WriteLine('Остановлено! i, j, k: ' + i + ', ' + j + ' ' + k) ;
}
}
Выполнение этой программы дает следующий результат.
i, j, k: ООО
Остановлено! i, j, k: 0, 0 3
Если бы не оператор goto, то в приведенной выше программе пришлось бы прибегнуть к трем операторам if и break, чтобы выйти из глубоко вложенной части этой программы. В данном случае оператор goto действительно упрощает код. И хотя приведенный выше пример служит лишь для демонстрации применения оператора goto, вполне возможны ситуации, в которых этот оператор может на самом деле оказаться полезным.
И последнее замечание: как следует из приведенного выше примера, из кодового блока можно выйти непосредственно, но войти в него так же непосредственно нельзя.
ГЛАВА 6 Введение в классы, объекты и методы
Эта глава служит введением в классы. Класс составляет основу языка С#, поскольку он определяет характер объекта. Кроме того, класс служит основанием для объектно-ориентированного