下载此文档

vb类模块和标准模块使用和区别.doc


文档分类:通信/电子 | 页数:约13页 举报非法文档有奖
1/13
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/13 下载此文档
文档列表 文档介绍
类模块和标准模块类模块和标准模块的不同点在于存储数据方法的不同。标准模块的数据只有一个备份。这意味着标准模块中一个公共变量的值改变以后, 在后面的程序中再读取该变量时, 它将得到同一个值。而类模块的数据, 是相对于类实例( 也就是, 由类创建的每一对象) 而独立存在的。同样的,标准模块中的数据在程序作用域内存在,也就是说,它存在于程序的存活期中;而类实例中的数据只存在于对象的存活期, 它随对象的创建而创建,随对象的撤消而消失。最后, 当变量在标准模块中声明为 Public 时, 则它在工程中任何地方都是可见的; 而类模块中的 Public 变量, 只有当对象变量含有对某一类实例的引用时才能访问。上面的比较, 同样适用于标准模块和类模块中的公共过程, 用下面的例子可以说明。新建一个工程, 并在“工程”菜单中个添加一个标准模块和一个类模块,然后运行以下的代码: 把下面的代码放在 Class1 中: ' 下面是 Class1 对象的一个属性。 ment As String ' 下面是 Class1 对象的一个方法。 Public Sub ment() ment, , gstrVisibleEverywhere End Sub 把下面的代码放在 Module1 中: ' 标准模块中的代码是全局的。 Public gstrVisibleEverywhere As String Public Sub CallableAnywhere(ByVal c1 As Class1) ' 下行改变一个全局变量,这是一个 Class1 实例的(属性) ' 只有传递给该过程的个别对象才受到影 ment = "Touched bya global function. " End Sub 把两个命令按钮放在 Form1 上,并在 Form1 中添加以下的代码: Private mc1First As Class1 Private mc1Second As Class1 Private Sub Form_Load() ' 创建两个 Class1 类的实例。 Set mc1First = New Class1 Set mc1Second = New Class1 gstrVisibleEverywhere = "Global string data " End Sub Private mand1_Click() Call CallableAnywhere(mc1First) End Sub Private mand2_Click() End Sub 按 F5 键,运行该工程。当 Form 1 加载时,它创建两个 Class 1 类实例, 每个实例有自己的数据。同时, Form 1 设置了下面全局变量 gstrVisibleEverywhere 的值。 mand1 ,调用全局过程并传递引用给第一个 Class1 对象。全局过程设 men t 属性,mand 1调用 men t 方法显示该对象的数据。正如图 1 所示,结果信息框演示了全局过程 CallableAnywher e ment 属性,而且全局字符串在 Class1 内部是可见的。图1 第一个 Class1 对象的信息框 mand2 ,调用第二个 Class1 类实例的 S ment 方法。如图 所示, 两个对象都访问了全局字符串变量; 然而, 第二个对象 ment 属性是空的,因为对全局过程 CallableAnywher e ment 属性。图2 第二个 Class1 对象的信息框重点: 要避免类的代码依赖于全局变量, 也就是标准模块中的公共变量。一个类的许多实例可以同时存在, 所有这些对象在程序中共享全局数据。在类模块代码中使用全局变量也违背了面向对象封装的编程原则,因为由这样的类所创建的对象并没有包含它们的所有数据。静态类数据有时,希望由一个类模块所创建的一些对象共享某个数据项。这就是所谓的静态类数据。不能在 Visual Basic 类模块中实现真正的静态类数据。但是,通过使用 Property 过程在标准模块中设置及返回 Public 数据成员的值, 可以仿真静态类数据, 如以下的代码: ' 只读属性返回应用程序的名字。 Property monString() As String ' 变量 gstrVisibleEverywhere 保存在' 标准模块中,并声明为 Public 。 CommonString = gstrVisibleEverywhere End Property 注意: 在类模块中, 对模块级的变量不能声明为 Static , Static 数据只能在过程中使用。由 Property Let 过程(对于含有对象

vb类模块和标准模块使用和区别 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数13
  • 收藏数0 收藏
  • 顶次数0
  • 上传人chuandao1680
  • 文件大小0 KB
  • 时间2016-04-13