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


Оператор 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)

Ссылки

Оператор Implements

Оператор Function (Visual Basic)

Список параметров (Visual Basic)

Оператор Dim (Visual Basic)

Оператор Call (Visual Basic)

Предложение Of (Visual Basic)

Основные понятия

Массивы параметров (Visual Basic)

Разделяемые методы (Visual Basic)