参数允许调用代码在调用过程时将值传递给过程。 声明过程的每个参数的方式与声明变量的方式相同,并指定其名称和数据类型。 还可以指定传递机制,以及参数是否为可选。
有关详细信息,请参阅 过程参数和实参。
定义程序参数
在过程声明中,将参数名称添加到过程的参数列表中,以逗号将其与其他参数隔开。
确定参数的数据类型。
在参数名称后加上
As子句以指定数据类型。确定参数所需的传递机制。 通常,除非希望过程能够在调用代码中更改其值,否则按值传递参数。
在参数名称前面加上 ByVal 或 ByRef 以指定传递机制。 有关详细信息,请参阅 按值传递参数与按引用传递参数之间的差异。
如果参数是可选的,请在传递机制前面加上 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和其他数据类型之间来回转换,从而降低性能。