Поделиться через


Оператор GoTo

Безусловно передает управление в указанную строку процедуры.

GoTo line

Компонент

  • line
    Обязательный. Метка строки.

Заметки

Оператор GoTo может передавать управление только в строки процедуры, в которой он находится. Строка должна иметь метку строки, на которую может сослаться GoTo. Дополнительные сведения см. в разделе Практическое руководство. Операторы меток (Visual Basic).

Примечание

Операторы GoTo могут осложнить читаемость и отладку кода.По возможности используйте управляющую структуру.Дополнительные сведения см. в разделе Управление ходом выполнения в Visual Basic.

Нельзя использовать оператор GoTo для передачи управления из кода вне конструкции For...Next, For Each...Next, SyncLock... End SyncLock, Try... Catch... Finally, With... End With или Using ... End Using на метку внутри этой конструкции.

Конструкции Try и ветвления

В пределах конструкции Try...Catch...Finally применяются следующие правила для ветвления с помощью оператора GoTo.

Блок или область

Ветвление внутрь извне

Ветвление вовне

Блок Try

Только из блока Catch той же конструкции1

Только вовне всей конструкции

Блок Catch

Никогда не разрешено

Только вовне всей конструкции или в блок Try той же конструкции1

Блок Finally

Никогда не разрешено

Никогда не разрешено

1 Если одна конструкция Try... Catch... Finally вложена в другую, блок Catch может передавать управление в блок Try на своем уровне вложенности, но не в любой другой блок Try. Вложенная конструкция Try... Catch... Finally должна полностью содержаться в блоке Try или Catch той конструкции, в которую вложена.

На следующем рисунке показана одна конструкция Try, вложенная в другую. Различные ветви между блоками двух конструкций помечаются как допустимые или нет.

Допустимые и недопустимые ветви в конструкциях Try

Графическая схема ветвления в конструкциях Try

Пример

В следующем примере используется оператор GoTo для передачи управления на метки в процедуре.

    Sub gotoStatementDemo()
        Dim number As Integer = 1
        Dim sampleString As String
        ' Evaluate number and branch to appropriate label.
        If number = 1 Then GoTo Line1 Else GoTo Line2
Line1:
        sampleString = "Number equals 1"
        GoTo LastLine
Line2:
        ' The following statement never gets executed because number = 1.
        sampleString = "Number equals 2"
LastLine:
        ' Write "Number equals 1" in the Debug window.
        Debug.WriteLine(sampleString)
    End Sub

См. также

Ссылки

Оператор Do...Loop (Visual Basic)

Оператор For... Next (Visual Basic)

Оператор For Each... Next (Visual Basic)

Оператор If...Then...Else (Visual Basic)

Оператор Select...Case (Visual Basic)

Оператор Try... Catch... Finally (Visual Basic)

Оператор While... End While (Visual Basic)

Оператор With... End With (Visual Basic)