VB.net 中Module的使用1

发布时间:2014-10-22 12:35:24编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"VB.net 中Module的使用1",主要涉及到VB.net 中Module的使用1方面的内容,对于VB.net 中Module的使用1感兴趣的同学可以参考一下。

创建只包含一个共享成员的一个VB.NET类的更简单的方法就是定义一个Module。Module是规则的、不能创建的类,它的成员是静态的。 类模块与模块的区别: 1.类模块中的数据对创建的每一个新实例都是惟一的,而在标准模块中的数据对应 应用程序或者对标准模块内的方法是全局的. 2.当类实例失效时,类模块中的数据也失效,或者收集到垃圾桶,而标准模块在应用程序的生存期都是活动的,直到应用程序退出. 但还是不太清楚其实用性,想问一下大家, 1、如果我在 模块(Module)里实例化一个类,如: Module Model     Public mod_DB As New DB         …… ……  是否 模块(Module)会把这个 mod_DB 成员 shared 了,并且每次在其他地方调用mod_DB时,mod_DB是共享的,mod_DB里面的数据(如果有)那就一定要是相同的,不然数据就不能独立而错误了。    还是 模块(Module)在每次被调用时都 new 一次 DB 赋给 mod_DB ,这时 mod_DB里面的数据就可以互相独立而不受干扰了?? 最后,问一下 在模块(Module)里实例化一个类 是否有其意义。好不好或能不能这样做? 请大家指教指教,谢谢。 我以前做了一个小东西,使用module,就是因为类定义问题出现了bug. 模块(Module)在每次被调用时都 new 一次 DB 赋给 mod_DB  会出现干扰。 模块(Module)里实例化一个类 有其意义,如果那个类是唯一的不可变的,用在module里面很好。 Module好比静态类,可以直接使用ModuleName.FunctionName()调用其中方法。 跟 Class ClassName    public shared Function fnXXX()     ...    End Function End Class 类似 直接使用ClassName.fnXXX()调用。 Module ModuleName    public Function fnXXX() End Module 调用:ModuleName.fnXXX() Module里的成员在第一次使用到它时被自动初始化。 (默认有个不带参数的New方法,你可以自己添加) 模块怎么会被new 很多次呢? 你在模块中建立了一个类的实例,那么就相当于声明了一个shared的变量。也就是说你可以在程序的任何地方直接使用该类的这个实例的属性或者方法,而不用再实例化一个出来。 共享级别的过程或者字段,是说经常被调用的对象。比如说连接数据库的字符串和返回连接的方法和过程。 你可以在模块中实例化一个类,定义若干的方法或过程,然后就要使用application.run()来打开一个主窗口(或登录窗口) 存在这种疑问可以自己测试呀: Public Class Form1     Inherits System.Windows.Forms.Form     Windows 窗体设计器生成的代码     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click         Dim a As AppClass         a = New AppClass         a = New AppClass         a = New AppClass     End Sub End Class Public Class TestClass     Private i As Integer     Sub New()         i = i + 1     End Sub     Public ReadOnly Property NowI() As Integer         Get             Return i         End Get     End Property End Class Public Module TestModule     Public m As New TestClass End Module Public Class AppClass     Sub New()         MsgBox(TestModule.m.NowI)     End Sub End Class 再将Module转换为Class,效果是一样的。 Public Class AppClass     Sub New()         MsgBox(TestModuleClass.m.NowI)     End Sub End Class Public NotInheritable Class TestModuleClass     Public Shared m As TestClass     Shared Sub New()         m = New TestClass     End Sub End Class 谢谢 大家的意见!按此说法应该是共享的,但这样 实例了的类的数据也要是一定相同的,不然就会有数据不正确,这样说 在 Module 直接写 需 shared 的方法和其字段,而不用实例化其他的类,因为实实例化一个对象一般是要独立的,不受影响的,这样和 Module 里的 共享 思想就有冲突了, 大家觉得是否是这样呢?? 另,谢谢大家的热心帮助! 我那个Public Class TestClass 有点问题 Private i As Integer 应该是 Private Shared i As Integer 这样才能反映i是否改变了。 当然,改了以后的结果还是一样的,i没变。 Module和静态类思想是一样的。在内存中只被实例化一次。当然不需要你进行实例化。 包括一些静态的数据成员,他们在托管堆中的位置与一般对象的位置是不同的。 以上是我自己的想法 :) 感觉是那种首先运行,首先实例化的东西。提供初始化功能,具体功能和class很像!


上一篇:C++初始杂记
下一篇:VB.net Module

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款