VB编程基础教程13–向过程传递参数 | 异次元软件世界

来源:百度文库 编辑:神马文学网 时间:2024/04/29 05:29:17

VB编程基础教程13–向过程传递参数

[ 程序乐园 ]

向过程传递参数

过程中的代码通常需要某些关于程序状态的信息才能完成它的工作。信息包括在调用过程时传递到过程内的变量。当将变量传递到过程时,称变量为参数。
参数的数据类型
过程的参数被缺省为具有 variant数据类型。不过,也可以声明参数为其它数据类型。例如,下面的函数接受一个字符串和一个整数:
functionwhatsforlunch(weekday as string, hour _
as integer) as string
  ‘根据星期几和时间,返回午餐菜单。
   if weekday = “friday” then
      whatsforlunch= “fish”
   else
      whatsforlunch = “chicken”
   end if
  if hour > 4 then whatsforlunch = “too late”
end function
详细信息关于 visual basic 的数据类型,请参阅本章前面部分。也可以在语言参考中查找指定的数据类型。
按值传递参数
按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变动只影响副本而不会影响变量本身。用 byval 关键字指出参数是按值来传递的。
例如:
sub postaccounts (byval intacctnum as integer)
   .
   .’这里放语句。
   .
end sub
按地址传递参数
按地址传递参数使过程用变量的内存地址去访问实际变量的内容。结果,将变量传递给过程时,通过过程可永远改变变量值。按地址传递参数在 visual basic 中是缺省的。
如果给按地址传递参数指定数据类型,就必须将这种类型的值传给参数。可以给参数传递一个表达式,而不是数据类型。visual basic计算表达式,如果可能的话,还会按要求的类型将值传递给参数。
把变量转换成表达式的最简单的方法就是把它放在括号内。例如,为了把声明为整数的变量传递给过程,该过程以字符串为参数,则可以用下面的语句:
sub callingprocedure ()
   dim intxas integer
   intx = 12 * 3
   foo (intx)
end sub
sub foo(bar as string)
   msgbox bar            ‘bar 的值为字符串‘ 36 ’。
endsub
使用可选的参数
在过程的参数列表中列入 optional关键字,就可以指定过程的参数为可选的。如果指定了可选参数,则参数表中此参数后面的其它参数也必是可选的,并且要用 optional关键字来声明。下面两段示例代码假定有一个窗体,其内有一命令按钮和一列表框。
例如,这段代码提供所有可选参数:
dim strnameas string
dim straddress as string
sub listtext(optional x asstring, optional y _
as string)
   list1.additem x
  list1.additem y
end sub
private sub command1_click ()
  strname = “yourname”
optional
   straddress =12345            ’提供了两个参数。
   call listtext (strname, straddress)
endsub
而下面的代码并未提供全部可选参数:
dim strname as string
dim varaddress asvariant
sub listtext (x as string, optional y as variant)
  list1.additem x
   if not ismissing (y) then
      list1.additem y
  end if
end sub
private sub command1_click ()
   strname =“yourname”            ‘未提供第二个参
                        ’数。
   calllisttext (strname)
end sub
在未提供某个可选参数时,实际上将该参数作为具有 empty值的变体来赋值。上例说明如何用 ismissing 函数测试丢失的可选参数。
提供可选参数的缺省值
也可以给可选参数指定缺省值。在下例中,如果未将可选参数传递到函数过程,则返回一个缺省值。
sub listtext(x as string, optional y as _
integer= 12345)
   list1.additem x
   list1.additem y
end sub
privatesub command1_click ()
   strname = “yourname”   ‘未提供第二个参
                    ’数。
   call listtext (strname)   ‘添加“yourname”和
                        ’“12345”。
endsub
使用不定数量的参数
一般说来,过程调用中的参数个数应等于过程说明的参数个数。可用 paramarray关键字指明,过程将接受任意个数的参数。于是可以这样来编写计算总和的 sum 函数:
dim x as integer
dim yas integer
dim intsum as integer
sub sum (paramarray intnums ())
  for each x in intnums
      y = y + x
   next x
   intsum = y
endsub
private sub command1_click ()
   sum 1, 3, 5, 7, 8
  list1.additem intsum
end sub
用命名的参数创建简单语句
对许多内建函数、语句和方法,visualbasic提供了命名参数方法来快捷传递参数值。对命名参数,通过给命名参数赋值,就可按任意次序提供任意多参数。为此,键入命名参数,其后为冒号、等号和值(myargument := “somevalue”),可以按任意次序安排这些赋值,它们之间用逗号分开。注意,下例中的参数顺序和所要参数的顺序相反:
function listtext(strname as string, optional straddress as string)
   list1.additemstrname
   list2.additem straddress
end sub
private subcommand1_click ()
   listtext straddress:=”12345”, strname:=”yourname”
end sub
如果过程有若干不必总要指定的可选参数,则上述内容更为有用。
确定对命名参数的支持
要确定哪一个函数、语句和方法支持命名参数,用“代码”窗口中的“autoquickinfo”功能,检查“对象浏览器”,或者参阅语言参考。使用命名参数时要注意以下几点:
在 visual basic (vb) 对象库中的对象的方法不支持命名参数。而 visual basic forapplications (vba) 对象库中的所有的语言关键字都支持命名的参数。

在语法中,命名参数是用粗体和斜体字表示的。所有其它参数只用斜体字表示。
重点 使用命名参数时不能省略所需参数的输入。可以只省略可选参数。对于 visual basic (vb) 和visual basic for applications (vba) 对象库,“对象浏览器”对话框将可选参数用方括号 [ ] 括起来。
详细信息 请参阅语言参考中的 “byval”、”byref”、”optional” 和 “paramarray”

VB编程基础教程13–向过程传递参数 | 异次元软件世界 VB编程基础教程11–过程 | 异次元软件世界 VB编程基础教程12–使用过程 | 异次元软件世界 VB编程基础教程18–在应用程序中使用DLL过程 | 异次元软件世界 VB编程基础教程1–编码基础 | 异次元软件世界 VB编程基础教程5–静态变量 | 异次元软件世界 VB编程基础教程6–常数 | 异次元软件世界 VB编程基础教程9–数组 | 异次元软件世界 VB编程基础教程10–动态数组 | 异次元软件世界 VB编程基础教程14–控制结构 | 异次元软件世界 VB编程基础教程15–使用对象 | 异次元软件世界 VB编程基础教程17–创建对象 | 异次元软件世界 VB编程基础教程21–优化 | 异次元软件世界 VB编程基础教程2–变量 | 异次元软件世界 VB编程基础教程9–数组 | 异次元软件世界999 VB编程基础教程9–数组 | 异次元软件世界 VB编程基础教程17–创建对象 | 异次元软件世界 VB编程基础教程3–理解变量的范围 | 异次元软件世界 VB编程基础教程4–高级变量主题 | 异次元软件世界 VB编程基础教程8–高级变量主题 | 异次元软件世界 VB编程基础教程16–对象之间的关系 | 异次元软件世界 VB编程基础教程19–界面设计的基础 | 异次元软件世界 VB编程基础教程20–坐标系统概述 | 异次元软件世界 VB编程基础教程8–高级变量主题 | 异次元软件世界