На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Урок 31. Оператор goto в C#


В тридцать первой части учебника по основам C# рассматривается использование оператора перехода "goto". Эта команда редко применяется и часто ей пренебрегают, но она предоставляет ценную функцию при использовании с оператором switch для управления течением программы.

Спагетти-Код

Оператор goto - это простая команда, которая безоговорочно передает управление программой другому оператору. Команда часто подвергается критике со стороны некоторых разработчиков, выступающих за ее удаление из всех языков программирования высокого уровня, потому что это может привести к спагетти-коду. Это происходит, когда существует так много операторов goto или подобных операторов перехода, что код становится трудно читать и поддерживать. Однако есть программисты, которые отмечают, что оператор goto, при осторожном использовании, обеспечивает элегантное решение некоторых проблем.

Базовый синтаксис

Основной синтаксис оператора goto очень прост. Во-первых, метка должна быть создана в пределах кода. Это становится местом назначения для прыжка. Метка определяется путем указания имени, за которым следует двоеточие (:). Оператор goto ссылается на метку, как показано ниже:

Console.WriteLine("это будет выведено.");
 
goto myLabel;
 
Console.WriteLine("это не будет выведено.");
 
myLabel:
 
Console.WriteLine("это тоже будет выведено.");
Следует отметить, что метка назначения должна быть в том же методе, что и goto, который ее вызывает. В некоторых случаях метка должна находиться в одном и том же блоке кода.

Goto и Switch

При использовании switch для условной обработки каждый оператор case также определяет метку. Команда goto может использоваться для перехода между случаями, позволяя выполнять каскадную цепочку операторов case, а не один элемент. Оператор break не требуется в случае, который заканчивается goto.

В следующем примере показана инструкция switch, используемая для интерпретации кода состояния. В этом примере сначала выполняется обращение "Warn", а затем-обращение" Complete". Этот пример также показывает, как быстро код может стать трудным для чтения, если команда goto используется небрежно.

string statusCode = "Warn";
 
switch (statusCode)
{
    case "Warn":
        Console.WriteLine("Завершено с предупреждениями.");
        goto case "Complete";
    case "Err":
        Console.WriteLine("Завершено с ошибками.");
        goto case "Complete";
    case "Complete":
        Console.WriteLine("Завершено.");
        break;
    case "Fail":
        Console.WriteLine("Не удалось завершить.");
        break;
    default:
        Console.WriteLine("Неизвестный код состояния");
        goto case "Fail";
Примечание: команда goto может использоваться только для перехода между случаями, включая случай по умолчанию. Переходы в или из всего оператора switch не допускаются.




тегистатьи IT, уроки по си шарп, си шарп, goto, операторы

Читайте также:




Обзор Java Date и Time API
Пошаговое руководство по верстке на вордпресс. Глава четвертая: футер и поиск


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.