如何:为过程定义参数 (Visual Basic)

参数允许调用代码在调用过程时将值传递给过程。 声明过程的每个参数的方式与声明变量的方式相同,即指定其名称和数据类型。 还可以指定传入机制,并指定参数是否可选。

有关详细信息,请参阅过程参数和自变量

定义过程参数

  1. 在过程声明中,将参数名称添加到过程的参数列表中,并用逗号将其与其他参数分开。

  2. 确定参数的数据类型。

  3. 在参数名称后面加上一个 As 子句可指定数据类型。

  4. 确定参数所需的传入机制。 通常按值传递参数,除非希望过程能够在调用代码中更改其值。

  5. 在参数名称前加上 ByValByRef 可指定传入机制。 有关详细信息,请参阅通过值传递自变量和通过引用传递自变量之间的差异

  6. 如果该参数是可选的,则在传入机制之前加上 Optional,在参数数据类型之后加上等于号 (=) 和默认值。

    以下示例定义了具有三个参数的 Sub 过程的概要。 前两个参数是必需的,第三个参数是可选的。 参数声明在参数列表中用逗号分隔。

    Sub updateCustomer(ByRef c As customer, ByVal region As String, 
      Optional ByVal level As Integer = 0)
      ' Insert code to update a customer object.
    End Sub
    

    第一个参数接受一个 customer 对象,updateCustomer 可以直接更新传递给 c 的变量,因为参数是通过 ByRef 传递的。 该过程无法更改最后两个参数的值,因为它们是通过 ByVal 传递的。

    如果调用代码没有为 level 参数提供值,Visual Basic 会将其设置为默认值 0。

    如果类型检查开关(Option Strict 语句)为 Off,则在定义参数时 As 子句是可选的。 但是,如果任何一个参数使用 As 子句,则所有参数都必须使用它。 如果类型检查开关为 On,则每个参数定义都需要 As 子句。

    为所有编程元素指定数据类型称为强类型。 设置 Option Strict On 后,Visual Basic 将强制实施强类型。 强烈建议执行该操作,原因如下:

    • 它为变量和参数启用 IntelliSense 支持。 这样,你就可以在键入代码时查看代码属性和其他成员。

    • 这使编译器能够执行类型检查。 这有助于捕获由于溢出等错误而可能在运行时失败的语句。 它还会捕获对不支持强类型的对象上的方法的调用。

    • 它可以更快地执行代码。 这样做的一个原因是,如果你没有为编程元素指定数据类型,Visual Basic 编译器会为其分配 Object 类型。 编译后的代码可能必须在 Object 和其他数据类型之间来回转换,这会降低性能。

另请参阅