参数允许调用代码在调用过程时将值传递给过程。 声明过程的每个参数的方式与声明变量的方式相同,并指定其名称和数据类型。 还可以指定传递机制,以及参数是否为可选。
有关详细信息,请参阅 过程参数和实参。
定义程序参数
在过程声明中,将参数名称添加到过程的参数列表中,以逗号将其与其他参数隔开。
确定参数的数据类型。
在参数名称后加上
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
和其他数据类型之间来回转换,从而降低性能。