Оператор Sub (Visual Basic)
Объявляет имя, параметры и код, определяющий процедуру Sub.
[ <attributelist> ] [ Partial ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ]
Sub name [ (Of typeparamlist) ] [ (parameterlist) ] [ Implements implementslist | Handles eventlist ]
[ statements ]
[ Exit Sub ]
[ statements ]
End Sub
Части
Термин |
Определение |
attributelist |
Необязательный. См. Список атрибутов. |
Partial |
Необязательный. Служит для обозначения разделяемого метода. См. раздел Разделяемые методы (Visual Basic). |
accessmodifier |
Необязательный. Может принимать следующие значения:
См. раздел Уровни доступа в Visual Basic. |
proceduremodifiers |
Необязательный. Может принимать следующие значения:
|
Shared |
Необязательный. См. раздел Shared. |
Shadows |
Необязательный. См. раздел Shadows. |
name |
Обязательный. Имя процедуры. См. раздел Имена объявленных типов (Visual Basic). Чтобы создать процедуру конструктора для класса, задайте в качестве имени процедуры Sub ключевое слово New. Дополнительные сведения см. в разделе Время существования: создание и уничтожение объектов (Visual Basic). |
typeparamlist |
Необязательный. Список параметров типов для универсальной процедуры. См. раздел Список типов. |
parameterlist |
Необязательный. Список имен локальных переменных, представляющих параметры этой процедуры. См. раздел Список параметров (Visual Basic). |
Implements |
Необязательный. Указывает, что эта процедура реализует одну или несколько Sub процедур, каждая из которых определена в интерфейсе, реализованном классом или структурой, которая содержит эту процедуру. См. раздел Оператор Implements. |
implementslist |
Параметр обязателен, если указано ключевое слово Implements. Список реализуемых процедур Sub. implementedprocedure [ , implementedprocedure ... ] Каждая процедура implementedprocedure имеет следующий синтаксис и составляющие: interface.definedname
КомпонентОписание
interface Обязательный.Имя интерфейса, реализуемого классом или структурой, где содержится данная процедура.
definedname Обязательный.Имя, под которым процедура определена в interface.
|
Handles |
Необязательный. Указывает, что эта процедура может обрабатывать одно или несколько конкретных событий. См. раздел Предложение Handles (Visual Basic). |
eventlist |
Параметр обязателен, если указано ключевое слово Handles. Список событий, которые обрабатывает данная процедура. eventspecifier [ , eventspecifier ... ] Каждый описатель события eventspecifier имеет следующий синтаксис и составляющие: eventvariable.event
КомпонентОписание
eventvariable Обязательный.Объектная переменная, объявленная с типом данных класса или структуры, где создается событие.
event Обязательный.Имя события, которое обрабатывает данная процедура.
|
statements |
Необязательный. Блок операторов для выполнения в этой процедуре. |
End Sub |
Завершает определение данной процедуры. |
Заметки
Весь исполняемый код должен быть внутри процедуры. Процедуры Sub используются в случаях, когда не требуется возвращать значение вызывающему коду. В случаях, когда нужно возвращать значение, используются процедуры Function.
Можно использовать зарезервированное слово Sub только на уровне модуля. Это означает, что контекст объявления процедуры Sub должен быть классом, структурой, модулем или интерфейсом и не может быть исходным файлом, пространством имен или блоком. Дополнительные сведения см. в разделе Контексты объявления и уровни доступа по умолчанию (Visual Basic).
Для процедур Sub по умолчанию установлен общий доступ. Уровни доступа можно настроить с помощью модификаторов доступа.
Правила
- Реализация. Если в процедуре используется ключевое слово Implements, то в содержащем ее классе или структуре должен присутствовать оператор Implements, следующий сразу за оператором Class или Structure. Оператор Implements должен включать все интерфейсы, указанные в implementslist. Однако имя, которым интерфейс определяет Sub (в definedname) не обязательно должно совпадать с именем данной процедуры (в name).
Поведение
Возвращение из процедуры. Когда процедура Sub возвращает результат в вызывающий код, выполняется оператор, следующий за оператором, из которого была вызвана процедура.
Операторы Exit Sub и Return вызывают немедленный выход из процедуры Sub. Любое количество операторов Exit Sub и Return может использоваться в любом месте процедуры, и их также можно использовать вместе с операторами Exit Sub и Return.
В следующем примере показан возврат из процедуры Sub:
Sub mySub(ByVal q As String) Return End Sub
Вызов процедуры. Процедура Sub, как и процедура Function, является отдельной процедурой, которая может принимать параметры и выполнять последовательность операторов. Тем не менее, в отличие от процедуры Function, которая возвращает значение, процедура Sub не может использоваться в выражениях.
Вызов процедуры Sub осуществляется с помощью имени процедуры, за которым следует список аргументов, заключенный в круглые скобки. Скобки могут опускаться только в том случае, если процедура не имеет аргументов. Однако, код является более удобочитаемым, если всегда включать круглые скобки.
Еще один способ вызова процедуры Sub состоит в использовании оператора Call. Это может улучшить удобочитаемость кода.
Устранение неполадок
Порядок выполнения. Visual Basic иногда меняет местами содержащиеся в коде арифметические выражения для повышения внутренней эффективности выполнения программы. Поэтому в случае, если список аргументов включает выражения, вызывающие другие процедуры, нельзя полагаться на то, что они будут вызываться в каком-то конкретном порядке.
Пример
В следующем примере оператор Sub используется для определения имени, параметров и кода, формирующих тело процедуры Sub.
Sub computeArea(ByVal length As Double, ByVal width As Double)
' Declare local variable.
Dim area As Double
If length = 0 Or width = 0 Then
' If either argument = 0 then exit Sub immediately.
Exit Sub
End If
' Calculate area of rectangle.
area = length * width
' Print area to Immediate window.
Debug.WriteLine(area)
End Sub
См. также
Задачи
Практическое руководство. Использование универсального класса (Visual Basic)
Устранение неполадок в процедурах (Visual Basic)
Практическое руководство. Создание разделяемого метода (Visual Basic)
Ссылки
Оператор Function (Visual Basic)
Список параметров (Visual Basic)