如何:定义过程的参数(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 Statement)为 Off,那么在定义参数时,As 子句是可选的。 但是,如果有任何一个参数使用As子句,那么所有参数都必须使用它。 如果类型检查开关是 On,则每个参数定义都需要 As 条款。

    为所有编程元素指定数据类型称为强类型。 设置 Option Strict On后,Visual Basic 将强制实施强键入。 强烈建议这样做,原因如下:

    • 它为你的变量和参数提供 IntelliSense 支持。 这样您就可以在编写代码时查看这些实体的属性和其他成员。

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

    • 这会加快代码的执行速度。 原因之一是,如果未为编程元素指定数据类型,Visual Basic 编译器会为其分配类型 Object 。 编译的代码可能必须在 Object 和其他数据类型之间来回转换,从而降低性能。

另请参阅