Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
17 of 1492 menu
◀ ▶

Оператор goto

Оператор goto выполняет безусловный переход на метку, объявленную в том же методе. Метка - это имя с двоеточием; на неё нельзя прыгать из другого метода. В switch допустим goto case для перехода между ветками. Для обычного выхода из цикла чаще берут break.

Синтаксис

goto метка; // ... метка: // код после перехода

Пример

Давайте перейдём вперёд на метку и пропустим промежуточный вывод:

using System; class Program { static void Main() { int num = 1; Console.WriteLine("start"); if (num > 0) { goto done; } Console.WriteLine("skip"); done: Console.WriteLine("finish"); } }

Результат выполнения кода:

"start" "finish"

Пример

Давайте выйдем из вложенного цикла на общую метку:

using System; class Program { static void Main() { for (int i = 1; i <= 3; i++) { for (int j = 1; j <= 3; j++) { if (i == 2 && j == 2) { goto exitLoops; } Console.WriteLine(i + " " + j); } } exitLoops: Console.WriteLine("done"); } }

Результат выполнения кода:

"1 1" "1 2" "1 3" "2 1" "done"

Пример

Давайте в switch перейти из одной ветки в другую через goto case:

using System; class Program { static void Main() { int code = 1; switch (code) { case 1: Console.WriteLine("one"); goto case 2; case 2: Console.WriteLine("two"); break; default: Console.WriteLine("other"); break; } } }

Результат выполнения кода:

"one" "two"

Пример

Давайте перейти на метку после проверки условия:

using System; class Program { static void Main() { int num = 5; if (num < 0) { goto negative; } Console.WriteLine("non-negative"); goto end; negative: Console.WriteLine("negative"); end: Console.WriteLine("end"); } }

Результат выполнения кода:

"non-negative" "end"

Смотрите также

  • оператор break,
    который выходит из цикла или switch
  • оператор continue,
    который переходит к следующей итерации
  • оператор switch,
    который выбирает ветку по значению
  • ветка case,
    которую можно связать через goto case
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить