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。

相关推荐
LDR00617 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术17 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园17 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob17 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享17 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.17 天前
C语言--day30
c语言·开发语言
何以解忧,唯有..17 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽17 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下17 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
飞天狗11117 天前
零基础JavaWeb入门——第五课第二小节:九大内置对象 · 第2个:response(响应对象)
java·开发语言