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

  Sub Test ()

  Dim Temp As Integer

  Temp = 2 ' Temp 的值为 2。

  MsgBox Form1.Temp ' Form1.Temp 的值为 1。

  End Sub

  Private Sub Form_Load ()

  Temp = 1 ' 将 Form1.Temp 的值设置成 1。

  End Sub

  Private Sub Command1_Click ()

  Test

  End Sub

  一般说来,当变量名称相同而范围不同时,局限性大的变量总会用“阴影”遮住局限性不太大的变量(即优先访问局限性大的变量)。所以,如果还有名为 Temp 的过程级变量,则它会用“阴影”遮住模块内部的公用变量Temp。

  阴影窗体属性和控件

  由于阴影效应,窗体属性、控件、常数和过程皆被视为窗体模块中的模块级变量。窗体属性或控件的名称与模块级变量、常数、自定义类型或过程的名称相同是不合法的,因为它们的范围相同。

  在窗体模块内,和窗体中控件同名的局部变量将遮住同名控件。因此必须引用窗体名称或 Me 关键字来限定控件,才能设置或者得到该控件的值或它的属性值。例如:

  Private Sub Form_Click ()

  Dim Text 1 , BackColor

  '假定该窗体有一个控件也叫做 Text1。

  Text1 = "Variable" '变量用“阴影”遮住控件。

  Me.Text1 = "Control" '要得到控件,必须用‘Me’限定。

  Text1.Top = 0 '导致出错!

  Me.Text1.Top = 0 '要得到控件,必须用‘Me’限定。

  BackColor = 0 '变量用“阴影”遮住属性。

  Me.BackColor = 0 '要得到窗体属性,必须用‘Me’限定。

  End Sub

  使用同名的变量和过程

  专用模块级变量和公共模块级变量的名字也会和过程名冲突。模块中的变量不能和任何过程同名,也不能和模块中定义的类型同名。但可以和公用过程或其它模块中定义的类型或变量同名。在这种情况下,从别的模块访问这个变量时,就必须用模块名来限定。

  虽然上面讨论阴影规则并不复杂,但是用阴影的方法可能会带来麻烦,而且会导致难以查找的错误。因此,对不同的变量使用不同的名称才是一种好的编程习惯。在窗体模块中应尽量使变量名和窗体中的控件名不一样。

  静态变量

  除范围之外,变量还有存活期,在这一期间变量能够保持它们的值。在应用程序的存活期内一直保持模块级变量和公用变量的值。但是,对于 Dim 声明的局部变量以及声明局部变量的过程,仅当过程在执行时这些局部变量才存在。通常,当一个过程执行完毕,它的局部变量的值就已经不存在,而且变量所占据的内存也被释放。当下一次执行该过程时,它的所有局部变量将重新初始化。

  但可将局部变量定义成静态的,从而保留变量的值。在过程内部用 Static 关键字声明一个或多个变量,其用法和 Dim 语句完全一样:

  Static Depth

  例如,下面的函数将存储在静态变量 Accumulate 中的以前的运营总值与一个新值相加,以计算运营总值。

  Function RunningTotal (num)

  Static ApplesSold

  ApplesSold = ApplesSold + num

  RunningTotal = ApplesSold

  End Function

  如果用 Dim 而不用 Static 声明 ApplesSold,则以前的累计值不会通过调用函数保留下来,函数只会简单地返回调用它的那个相同值。

  在模块的声明段声明 ApplesSold,并使它成为模块级变量,由此也会收到同样效果。但是,这种方法一旦改变变量的范围,过程就不再对变量排他性存取。由于其它过程也可以访问和改变变量的值,所以运营总值也许不可靠,代码将更难于维护。

  声明所有的局部变量为静态变量

  为了使过程中所有的局部变量为静态变量,可在过程头的起始处加上 Static关键字。例如:

  Static Function RunningTotal (num)

  这就使过程中的所有局部变量都变为静态,无论它们是用 Static、Dim 或Private 声明的还是隐式声明的。可以将 Static 放在任何 Sub 或 Function过程头的前面,包括事件过程和声明为 Private 的过程。

  常数

  经常会发现代码包含一些常数值,它们一次又一次地反复出现。还可发现,代码要用到很难记住的数字,而那些数字没有明确意义。

  在这些情况下,可用常数大幅度地改进代码的可读性和可维护性。常数是有意义的名字,取代永远不变的数值或字符串。尽管常数有点像变量,但不能像对变量那样修改常数,也不能对常数赋以新值。常数有两种来源:

  1.内部的或系统定义的常数是应用程序和控件提供的。在“对象浏览器”中的 Visual Basic ( VB ) 、和 Visual Basic for applications ( VBA ) 对象库中列举了 Visual Basic 的常数。其它提供对象库的应用程序,如Microsoft excel 和 Microsoft Project,也提供了常数列表,这些常数可与应用程序的对象、方法和属性一起使用。在每个 ActiveX 控件的对象库中也定义了常数。关于使用“对象浏览器”的详细信息,请参阅第九章“用对象编程”。

  2.符号的或用户定义的常数是用 Const 语句来声明的。下节“创建属于自己的常数”中将说明用户定义的常数。

  在 Visual Basic 中,常数名采用大小写混合的格式,其前缀表示定义常数的对象库名。来自 Visual Basic 和 Visual Basic for applications 对象库的常数以 "VB" 开头,例如vbtileHorizontal。

  设计前缀时应尽力防止发生意外冲突,不能出现常数名称相同但表示不同数值的情况。即使使用了前缀,两个对象库也仍可能包含表示不同值的相同常数。在这种情况下,引用哪个常数取决于哪个对象库具有更高的优先级。关于改变对象库优先级的信息,请参阅 “引用对话框”部分。

  为了绝对确保不发生常数名字冲突,可用以下

上一页  1 2 3 4 下一页

排行

  1. VB的程序加密方法
  2. FlexGrid控件的使用
  3. vb的CommonDialog控件的使用
  4. vb的FlexGrid控件
  5. vb的按钮控件
  6. Delphi存取图像完整解决方案
  7. 在PHP与DB2 9中使用Ajax:Xajax
  8. 听说过WinZip软件也可以“杀毒”
  9. 利用Delphi开发旅游景点微机售票
  10. 在DBGrid组件中显示和编辑MEMO字
  11. 学好VC++的十大良好习惯
  12. DELPHI数据库应用程序的开发环境
  13. 汇编DEBUG全过程跟踪
  14. 汇编中的管道操作方法(一)
  15. 汇编中的管道操作方法(二)
  16. 汇编中的管道操作方法(三)
  1. 在PHP与DB2 9中使用Ajax:Xajax
  2. Delphi存取图像完整解决方案
  3. 听说过WinZip软件也可以“杀毒”
  4. 利用Delphi开发旅游景点微机售票
  5. 在DBGrid组件中显示和编辑MEMO字
  6. 学好VC++的十大良好习惯
  7. DELPHI数据库应用程序的开发环境
  8. 汇编DEBUG全过程跟踪
  9. MS Jet SQL for Access 2000中级
  10. MS Jet SQL for Access 2000中级
  11. ACCESS数据库数据传递的方法
  12. 破解Access(*.mdb)目前所有版本的
  13. 汇编中的管道操作方法(一)
  14. 汇编中的管道操作方法(二)
  15. 汇编中的管道操作方法(三)
  16. 汇编进程控制的实现方法(一)
  1. VB的程序加密方法
  2. FlexGrid控件的使用
  3. vb的CommonDialog控件的使用
  4. vb的FlexGrid控件
  5. vb的按钮控件
  6. 教你修改“压缩文件”的使用小技
  7. vb的属性、方法和事件(一)
  8. vb的属性、方法和事件(二)
  9. vb控件的使用
  10. vb的控件数据
  11. vb控件简介
  12. vb程序设计
  13. vb的工具栏、对话框
  14. vb菜单在应用程序中的使用
  15. vb的用户界面
  16. vb对象的使用

最近更新

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