VB.net 中Module的使用1

前端之家收集整理的这篇文章主要介绍了VB.net 中Module的使用1前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
创建只包含一个共享成员的一个VB.NET类的更简单的方法就是定义一个Module。Module是规则的、不能创建的类,它的成员是静态的。 类模块与模块的区别: 1.类模块中的数据对创建的每一个新实例都是惟一的,而在标准模块中的数据对应应用程序或者对标准模块内的方法是全局的. 2.当类实例失效时,类模块中的数据也失效,或者收集到垃圾桶,而标准模块在应用程序的生存期都是活动的,直到应用程序退出. 但还是不太清楚其实用性,想问一下大家, 1、如果我在模块(Module)里实例化一个类,如: ModuleModel Publicmod_DBAsNewDB ………… 是否模块(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()调用其中方法。 跟 ClassClassName publicsharedFunctionfnXXX() ... EndFunction EndClass 类似 直接使用ClassName.fnXXX()调用。 ModuleModuleName publicFunctionfnXXX() EndModule 调用:ModuleName.fnXXX() Module里的成员在第一次使用到它时被自动初始化。 (默认有个不带参数的New方法,你可以自己添加) 模块怎么会被new很多次呢? 你在模块中建立了一个类的实例,那么就相当于声明了一个shared的变量。也就是说你可以在程序的任何地方直接使用该类的这个实例的属性或者方法,而不用再实例化一个出来。 共享级别的过程或者字段,是说经常被调用的对象。比如说连接数据库的字符串和返回连接的方法和过程。 你可以在模块中实例化一个类,定义若干的方法或过程,然后就要使用application.run()来打开一个主窗口(或登录窗口) 存在这种疑问可以自己测试呀: PublicClassForm1 InheritsSystem.Windows.Forms.Form Windows窗体设计器生成代码 PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click DimaAsAppClass a=NewAppClass a=NewAppClass a=NewAppClass EndSub EndClass PublicClassTestClass PrivateiAsInteger SubNew() i=i+1 EndSub PublicReadOnlyPropertyNowI()AsInteger Get Returni EndGet EndProperty EndClass PublicModuleTestModule PublicmAsNewTestClass EndModule PublicClassAppClass SubNew() MsgBox(TestModule.m.NowI) EndSub EndClass 再将Module转换为Class,效果是一样的。 PublicClassAppClass SubNew() MsgBox(TestModuleClass.m.NowI) EndSub EndClass PublicNotInheritableClassTestModuleClass PublicSharedmAsTestClass SharedSubNew() m=NewTestClass EndSub EndClass 谢谢大家的意见!按此说法应该是共享的,但这样实例了的类的数据也要是一定相同的,不然就会有数据不正确,这样说 在Module直接写需shared的方法和其字段,而不用实例化其他的类,因为实实例化一个对象一般是要独立的,不受影响的,这样和Module里的共享思想就有冲突了, 大家觉得是否是这样呢?? 另,谢谢大家的热心帮助! 我那个PublicClassTestClass 有点问题 PrivateiAsInteger 应该是 PrivateSharediAsInteger 这样才能反映i是否改变了。 当然,改了以后的结果还是一样的,i没变。 Module和静态类思想是一样的。在内存中只被实例化一次。当然不需要你进行实例化。 包括一些静态的数据成员,他们在托管堆中的位置与一般对象的位置是不同的。 以上是我自己的想法:) 感觉是那种首先运行,首先实例化的东西。提供初始化功能,具体功能和class很像!

猜你在找的VB相关文章