Sub 语句 (Visual Basic)

更新:2007 年 11 月

声明定义 Sub 过程的名称、参数和代码。

[ <attributelist> ] [ Partial ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] 
Sub name [ (Of typeparamlist) ] [ (parameterlist) ] [ Implements implementslist | Handles eventlist ]
    [ statements ]
    [ Exit Sub ]
    [ statements ]
End Sub

部分

  • attributelist
    可选。请参见属性列表

  • Partial
    可选。指示分部方法的定义。请参见分部方法

  • accessmodifier
    可选。可以是如下内容之一:

    请参见 Visual Basic 中的访问级别

  • proceduremodifiers
    可选。可以是如下内容之一:

  • Shared
    可选。请参见 Shared

  • Shadows
    可选。请参见 Shadows

  • name
    必需。过程名。请参见 已声明元素的名称

  • typeparamlist
    可选。泛型过程的类型参数的列表。请参见类型列表

  • parameterlist
    可选。表示此过程的参数的局部变量名称的列表。请参见 参数列表

  • Implements
    可选。指示此过程实现一个或多个 Sub 过程,每个过程都在此过程的包含类或结构所实现的接口中定义。请参见 Implements 语句

  • implementslist
    如果提供了 Implements 则需要。正在实现的 Sub 过程列表。

    implementedprocedure [ , implementedprocedure ... ]

    每个 implementedprocedure 均有下列语法和部分:

    interface.definedname

    部分

    说明

    interface

    必需。此过程的包含类或结构所实现的接口的名称。

    definedname

    必需。interface 中定义该过程时使用的名称。

  • Handles
    可选。指示此过程是否可以处理一个或多个特定事件。请参见 Handles

  • eventlist
    如果提供了 Handles 则需要。此过程处理的事件的列表。

    eventspecifier [ , eventspecifier ... ]

    每个 eventspecifier 均有下列语法和部分:

    eventvariable.event

    部分

    说明

    eventvariable

    必需。用引发该事件的类或结构的数据类型声明的对象变量。

    event

    必需。此过程处理的事件的名称。

  • statements
    可选。要在此过程内运行的语句块。

  • EndSub
    结束此过程的定义。

备注

所有可执行代码都必须在过程内。在不需要将值返回到调用代码的情况下可使用 Sub 过程。在需要返回值时可使用 Function 过程。

仅可以在模块级别使用 Sub。这意味着 Sub 过程的声明上下文必须是类、结构、模块或接口,并且不能是源文件、命名空间、过程或块。有关更多信息,请参见 声明上下文和默认访问级别

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 
    
  • **调用过程。**与 Function 过程一样,Sub 过程是采用参数和执行一系列语句的单独过程。然而,与返回值的 Function 过程不同,Sub 过程不能在表达式中使用。

    通过使用语句中的过程名(后跟圆括号中的参数列表)调用 Sub 过程。只有在不提供任何参数时,才可以省略括号。不过,如果您始终使用圆括号,则代码的可读性会更好。

    也可以使用 Call 语句调用 Sub 过程。这能够提高代码的可读性。

疑难解答

**执行的顺序。**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)

概念

参数数组

分部方法

参考

Implements 语句

Function 语句 (Visual Basic)

参数列表

Dim 语句 (Visual Basic)

Call 语句 (Visual Basic)

Of