前端之家收集整理的这篇文章主要介绍了
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() Msg
Box(TestModule.m.NowI) EndSub EndClass 再将Module转换为Class,
效果是一样的。 PublicClassAppClass SubNew() Msg
Box(TestModuleClass.m.NowI) EndSub EndClass PublicNotInheritableClassTestModuleClass PublicSharedmAsTestClass SharedSubNew() m=NewTestClass EndSub EndClass 谢谢大家的意见!按此说法应该是共享的,但这样实例了的类的数据也要是一定相同的,不然就会有数据不正确,这样说 在Module直接写需shared的
方法和其字段,而不用实例化其他的类,因为实实例化一个对象一般是要独立的,不受影响的,这样和Module里的共享思想就有冲突了, 大家觉得是否是这样呢?? 另,谢谢大家的热心帮助! 我那个PublicClassTestClass 有点问题 PrivateiAsInteger 应该是 PrivateSharediAsInteger 这样才能反映i是否改变了。 当然,改了以后的结果还是一样的,i没变。 Module和静态类思想是一样的。在内存中只被实例化一次。当然不需要你进行实例化。
包括一些静态的数据成员,他们在托管堆中的位置与一般对象的位置是不同的。 以上是我自己的想法:) 感觉是那种首先运行,首先实例化的东西。提供初始化
功能,具体
功能和class很像!
原文链接:https://www.f2er.com/vb/258551.html