有如下过程,将两次调用过程proc的结果分别填于空【 】和【 】处。 Private Sub Command1_Click( ) Dim a As Integer Dim b As Integer

admin2009-03-15  25

问题 有如下过程,将两次调用过程proc的结果分别填于空【  】和【  】处。
     Private Sub Command1_Click( )
       Dim a As Integer
       Dim b As Integer
        a=2
        b=5
        Call proc(a,B)     【  】
        Call proc(A)       【  】
    End Sub
    Private Sub proc(x As Integer,Optional y)
        Dim z As Integer
        If  IsMissing(y) Then
      MsgBox ("没有提供可选参数")
        Else
         z=x*y
         MsgBox ("乘积=" + Str(z))
        End If
     End Sub

选项

答案乘积:10 ,没有提供可选参数

解析 本题中出现了可选参数,注意函数IsMissing()的使用。空[9]处的调用语句的结果是显示“乘积= 10”空[10]处调用的结果是显示“没有提供可选参数”。显然,第二次调用中,由于第二个可选参数默认,使 IsMissing()函数的值为True,才使程序流程进入Then子句的分支。
   在没有指定可选参数的默认值时,可选参数的默认值被默认为变体类型的Empty值。当然,用户也可以提供可选参数的默认值,指定方式是在用Optional声明的形式参数后面用“=”号赋默认值。指定默认值后,即使没有提供可选参数,函数IsMissing()的值均为False,因为程序把指定的默认值默认为可选参数的值,因而没有丢失。将上例稍加修改,在可选参数y后为其指定默认值1。
   Private Sub proc(x As Integer,Optional y=1)
   空[10]处调用的结果变为显示“乘积=2”。显然,第二次调用中,虽然第二个可选参数默认,但将默认值1作为形式参数y的初值。从If语句分支的进入情况可以看出,该次调用中IsMissing()函数的值为False,才使程序流程进入Else子句的分支。
转载请注明原文地址:https://kaotiyun.com/show/UD1p777K
0

最新回复(0)