Visual Basic 参数传送-形参与实参

在被调用过程中的参数是形参,出现在Sub过程和Function过程中。在过程被调用之前,形参并未被分配内存,只是说明形参的类型和在过程中的作用。形参列表中的各参数之间用逗号分隔,形参可以是变量名和数组名,但不能是定长字符串变量。

实参是在主调过程中的参数,在过程调用时实参将数据传递给形参。实参表可由常量、表达式、有效的变量名、数组名组成,实参表中各参数用逗号分隔。在调用过程时,实参被插入形参中的各变量处进行"形实结合",形实结合是按位置结合的,即第一个实参与第一个形参结合,第二个实参与第二个形参结合,依此类推。例如:

形参列表和实参列表中的对应变量名可以不同,但实参和形参的个数、顺序以及数据类型必须相符。所谓类型相符,对于变量参数就是类型相同,对于值参数则要求实际参数对形式参数赋值相容。

若在过程的形参表中列入了Optional关键字,则可以指定过程的形式参数为可选参数。如果某一参数为可选参数,则参数表中此参数后面的其他参数也必须是可选的,并要用Optional来声明。

例如,我们建立一个计算两个数据的乘积的过程,它能可选择地乘以第三个数。在调用时,既可以给它传递两个参数,也可给它传递3个参数。为了定义带可选参数的过程,必须在参数表中使用Optional关键字,并在过程体中通过IsMissing函数来测试调用时是否传递可选参数。过程代码为:

Sub Multi(fir As Integer, sec As Integer, Optional thir)

n = fir * sec

If Not IsMissing(thir) Then

n = n * thir

End If

Print n

End Sub

在调用上面的过程时,可以提供两个参数,也可提供3个参数,都能得到正确的结果。例如,如果用下述事件过程调用:

Private Sub Form_Click()

Multi 10, 20

End Sub

结果为200。如果用下述过程调用:

Private Sub Form_Click()

Multi 10, 20, 30

End Sub

结果为6000。

上述过程只有一个可选参数,也可以有两个或多个。但应注意,可选参数必须在参数的最后,且一般为Variant类型。另外,还可给可选参数指定缺省值,如Multi过程可改为:

Sub Multi(fir As Integer, sec As Integer, Optional thir As Integer = 30)

......

End Sub

一般来说,过程调用中的参数个数应等于过程说明的参数个数。如果使用ParamArray关键字,则过程可以接受任意个数的参数。例如,我们可以定义一个可变参数过程,用这个过程可以求任意多个数的乘积。

Sub Multi(ParamArray Numbers())

n = 1

For Each x In Numbers

n = n * x

Next x

Print n

End Sub

可以用任意个参数调用上述过程,如:

Private Sub Form_Click()

Multi 3, 4, 5, 6, 7

End Sub

输出结果为2520。

相关推荐
学逆向的2 分钟前
扩展PE头属性说明
开发语言·网络安全·pe
水饺编程3 分钟前
第5章,[Win32 章节] :圆角矩形教学插图绘制程序
c语言·c++·windows·visual studio
秋名RG10 分钟前
Java 基础语法
java·开发语言
码行山野赴时序归途14 分钟前
C 语言文件操作完全指南:从打开到关闭
c语言·开发语言
2501_9378609421 分钟前
Java 文件操作与IO(下):字节流、字符流实战IO读写
java·开发语言·python
事圆则缓27 分钟前
Kotlin 高阶工程化与 Android 深入实践
android·开发语言·kotlin
驭渊的小故事34 分钟前
java抽奖项目-奖品上传中传递参数类型的错误
java·开发语言
名字还没想好☜37 分钟前
Go 时间格式化为什么用 2006-01-02:time.Format/Parse 的参考时间、时区与解析踩坑
开发语言·后端·golang·go
Dream Cosmos39 分钟前
C++ 多态下篇:虚函数表、动态绑定与多态底层原理
开发语言·c++
2601_962071579 小时前
【Java报错已解决】org.springframework.beans.factory.BeanCreationException
java·开发语言