如何:为过程定义参数

更新:2007 年 11 月

“参数”允许调用代码在调用过程时将值传递到过程。声明过程的每个参数与声明变量的方法一样,都是指定其名称和数据类型。也可以指定传递机制,以及参数是否可选。

有关更多信息,请参见 过程参数和变量

定义过程参数

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

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

  3. 在参数名称后加上 As 子句来指定数据类型。

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

  5. 将带有 ByValByRef 的参数名称放在前面,以指定传递机制。有关更多信息,请参见 通过值传递参数和通过引用传递参数之间的差异

  6. 如果参数为可选项,将带有 Optional (Visual Basic) 的传递机制放在前面,后面是带有等号 (=) 的参数数据类型以及一个默认值。

    下面的示例定义一个带有三个参数的 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 和其他数据类型之间来回转换,这样将降低性能。

请参见

任务

如何:将参数传递给过程

概念

Visual Basic 中的过程

Sub 过程

Function 过程

通过值和通过引用传递参数

递归过程

过程重载

其他资源

Visual Basic 中面向对象的编程