Вот к какому результату приводит выполнение этой программы.

В ветви 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 Введение в классы, объекты и методы

Перейти на страницу:

Похожие книги