VB几种函数参数传递方法,Variant,数组,Optional,ParamArray
一) 过程的参数被缺省为具有 Variant 数据类型。
1)ByRef按 地址传递参数在 VB 中是缺省的
按地址传递参数后,过程返回的也是地址,函数中改变了的变量值也将带回来。
2)ByVal 关键字指出参数是按值来传递的
按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变动只影响副本而不会影响变量本身。
二)使用不定数量的参数 ParamArray
一般说来,过程调用中的参数个数应等于过程说明的参数个数。可用 ParamArray 关键字指明,过程将接受任意个数的参数。于是可以这样来编写计算总和的 Sum 函数:
Dim x As Integer,y As Integer,intSum As Integer
Sub Sum (ParamArray intNums ())
For Each x In intNums
y = y + x
Next x
intSum = y
End Sub
调用方法 Sum 1, 3, 5, 7, 8
三)Optional 关键字,使用可选的参数
Optional 关键字,就可以指定过程的参数为可选的。如果指定了可选参数,则参数表中此参数后面的其它参数也必是可选的,并且要用 Optional 关键字来声明。
Dim strName As String,varAddress As Variant
Sub ListText (x As String, Optional y As Variant)
List1.AddItem x
If Not IsMissing (y) Then
List1.AddItem y
End If
End Sub
调用1: Call ListText("yourname") '未提供第二个参数。
2: Call ListText("yourname",12345)
在未提供某个可选参数时,实际上将该参数作为具有 Empty 值的变体来赋值。
上例说明如何用 IsMissing 函数测试丢失的可选参数。
四)Optional 声明arr()数组与Variant 方法
通常用Optional arr() as TypeName 为非法
此时可声明函数变量为 Optional arr as Variant
调用时可使用Fun(arr())
此时函数中可用LBound(arr)的UBound(arr)确定数组边界
一) 过程的参数被缺省为具有 Variant 数据类型。
1)ByRef按 地址传递参数在 VB 中是缺省的
按地址传递参数后,过程返回的也是地址,函数中改变了的变量值也将带回来。
2)ByVal 关键字指出参数是按值来传递的
按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变动只影响副本而不会影响变量本身。
二)使用不定数量的参数 ParamArray
一般说来,过程调用中的参数个数应等于过程说明的参数个数。可用 ParamArray 关键字指明,过程将接受任意个数的参数。于是可以这样来编写计算总和的 Sum 函数:
Dim x As Integer,y As Integer,intSum As Integer
Sub Sum (ParamArray intNums ())
For Each x In intNums
y = y + x
Next x
intSum = y
End Sub
调用方法 Sum 1, 3, 5, 7, 8
三)Optional 关键字,使用可选的参数
Optional 关键字,就可以指定过程的参数为可选的。如果指定了可选参数,则参数表中此参数后面的其它参数也必是可选的,并且要用 Optional 关键字来声明。
Dim strName As String,varAddress As Variant
Sub ListText (x As String, Optional y As Variant)
List1.AddItem x
If Not IsMissing (y) Then
List1.AddItem y
End If
End Sub
调用1: Call ListText("yourname") '未提供第二个参数。
2: Call ListText("yourname",12345)
在未提供某个可选参数时,实际上将该参数作为具有 Empty 值的变体来赋值。
上例说明如何用 IsMissing 函数测试丢失的可选参数。
四)Optional 声明arr()数组与Variant 方法
通常用Optional arr() as TypeName 为非法
此时可声明函数变量为 Optional arr as Variant
调用时可使用Fun(arr())
此时函数中可用LBound(arr)的UBound(arr)确定数组边界