天天加油 - 助您成才
vb变量、常数和数据类型及过程概述(四)
您正在看的VB|VB.NET是:vb变量、常数和数据类型及过程概述(四)。

  标准模块中的过程

  如果过程名是唯一的,则不必在调用时加模块名。无论是在模块内,还是在模块外调用,结果总会引用这个唯一过程。如果过程仅出现在一个地方,这个过程就是唯一的。

  如果两个以上的模块都包含同名的过程,那就有必要用模块名来限定了。在同一模块内调用一个公共过程就会运行该模块内的过程。例如,对于Module1 和 Module2 中名为 CommonName 的过程,从 Module2 中调用CommonName 则运行 Module2 中的CommonName过程,而不是 Module1中的 CommonName 过程。

  从其它模块调用公共过程名时必须指定那个模块。例如,若在 Module1 中调用 Module2 中的 CommonName 过程,要用下面的语句:

  Module2.CommonName (arguments)

  向过程传递参数

  过程中的代码通常需要某些关于程序状态的信息才能完成它的工作。信息包括在调用过程时传递到过程内的变量。当将变量传递到过程时,称变量为参数。

  参数的数据类型

  过程的参数被缺省为具有 Variant 数据类型。不过,也可以声明参数为其它数据类型。例如,下面的函数接受一个字符串和一个整数:

  Function WhatsForLunch(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 intX As Integer

  intX = 12 * 3

  Foo (intX)

  End Sub

  Sub Foo (Bar As String)

  MsgBox Bar 'Bar 的值为字符串‘ 36 ’。

  End Sub

  使用可选的参数

  在过程的参数列表中列入 Optional 关键字,就可以指定过程的参数为可选的。如果指定了可选参数,则参数表中此参数后面的其它参数也必是可选的,并且要用 Optional 关键字来声明。下面两段示例代码假定有一个窗体,其内有一命令按钮和一列表框。

  例如,这段代码提供所有可选参数:

  Dim strName As String

  Dim strAddress As String

  Sub ListText(Optional x As String, Optional y _

  As String)

  List1.AddItem x

  List1.AddItem y

  End Sub

  Private Sub Command1_Click ()

  strName = "yourname"

  strAddress = 12345 '提供了两个参数。

  Call ListText (strName, strAddress)

  End Sub

  而下面的代码并未提供全部可选参数:

  Dim strName As String

  Dim varAddress As Variant

  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" '未提供第二个参数。

  Call ListText (strName)

  End Sub

  在未提供某个可选参数时,实际上将该参数作为具有Empty 值的变体来赋值。上例说明如何用IsMissing 函数测试丢失的可选参数。

  提供可选参数的缺省值

  也可以给可选参数指定缺省值。在下例中,如果未将可选参数传递到函数过程,则返回一个缺省值。

  Sub ListText(x As String, Optional y As _

  Integer = 12345)

  List1.AddItem x

  List1.AddItem y

  End Sub

  Private Sub Command1_Click ()

  strName = "yourname" '未提供第二个参数。

  Call ListText (strName) '添加“yourname”和“12345”。

  End Sub

  使用不定数量的参数一般说来,过程调用中的参数个数应等于过程说明的参数个数。可用ParamArray 关键字指明,过程将接受任意个数的参数。于是可以这样来编写计算总和的 Sum 函数:

  Dim x As Integer

  Dim y As Integer

  Dim intSum As Integer

  Sub Sum (ParamArray intNums ())

  For Each x In intNums

  y = y + x

  Next x

  intSum = y

[1] [2] [3] 下一页

  • 热门文章
  • 最近更新
  • 推荐阅读
  • VB|VB.NET《vb变量、常数和数据类型及过程概述(四)》vb变量、常数和数据类型及过程概述(四)
    关于我们 | 版权申明 | 广告服务 | 友情链接 | 网站地图 | 使用帮助 | ©2006-2008 TTADD.COM