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。

相关推荐
为何创造硅基生物10 小时前
C语言 结构体内存对齐规则(通俗易懂版)
c语言·开发语言
吃好睡好便好10 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
星寂樱易李10 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
仰泳之鹅10 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
之歆11 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
cen__y12 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
AI人工智能+电脑小能手12 小时前
【大白话说Java面试题 第65题】【JVM篇】第25题:谈谈对 OOM 的认识
java·开发语言·jvm
社交怪人12 小时前
【算平均分】信息学奥赛一本通C语言解法(题号2071)
c语言·开发语言
郭涤生13 小时前
不同主机之间网络通信-以太网连接复习
开发语言·rk3588
山居秋暝LS13 小时前
【无标题】RTX00安装paddle OCR,win11不能装最新的,也不能用GPU
开发语言·r语言