Оператор GoTo
Обновлен: Ноябрь 2007
Безусловно передает управление в указанную строку процедуры.
GoTo line
Компонент
- line
Требуется. Метка строки.
Заметки
Оператор GoTo может передавать управление только в строки процедуры, в которой он находится. Строка должна иметь метку строки, на которую может сослаться GoTo. Дополнительные сведения см. в разделе Практическое руководство. Операторы меток.
Примечание. |
---|
Операторы 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
Пример
В следующем примере используется оператор 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)