微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vb.net中的共享方法、共享变量、全局变量

共享方法

  • 含义:不需要创建类的实例的方法。在其他编程语言中称为静态方法或者类方法
  • 实例一个共享方法不能作为一种普通的方法,通过一个对象的实例来访问,而是可以从类直接访问。共享方法实例如下
	PublicclassMath 
	SharedFunctionAdd(ByValaAsInteger,ByValbAsInteger)AsInteger 
	Returna+b 
	EndFunction 
	EndClass
我们可以不用实例化一个Math对象,就可以访问,代码如下:
	DimresultAsInteger 
 result=Math.Add(5,10)
  • 分析:上例中直接使用类的方法。如果用通常的方法就将导致错误,但是利用了共享方法一切都变得可以接受了。共享方法不仅可以通过通常的方法来访问而且可以在不需要创建一个对象的条件下提供访问的功能。实际上,当一个共享方法调用的时候,没有任何对象被创建,它就象再模块中的一个程序可以直接被调用

  • 重载:vb.net共享方法也可以被重载,因此可以利用相同的共享方法来创建一系列变化的方法,每一种方法有不同的参数列表。
  • 作用域:共享方法的缺省的作用域是Public。我们也可以在声明中将共享方法设置为Friend、Protected或者Private。实际上,当重载方法的时候,只要参数列表不同我们就有不同的作用域。
  • 使用:究竟共享方法是如何使用的呢,下面我们看看一个例子。当我们想为输入打开一个文本文件的时候,我们可以在File类中使用一个共享代码,如下:
	DiminfileAsstreamReader=File.OpenText(words.txt) 
	DimstrInAsstring 
	str=infile.ReadLine()

共享变量

  • 含义:我们可以创建另外一种共享成员。有时候类的所有实例需要共享一个数值,有时候每个特定类型的对象要共享相同的变量,这些时候都可以通过使用共享变量来实现目的。一个VB.NET共享变量可以使用Shared关键字来声明,这一点很象共享方法的声明:
	PublicclassMyCounter 
	PrivateSharedmintCountAsInteger 
	EndClass

  • 作用域:在缺省状态下,共享方法是Public,而共享变量是Private。总而言之,我们要养成一个好的习惯:定义方法和变量的作用域而不使用缺省值,以避免混乱。关于共享变量的一件重要的事情是它们在所有类的实例中都是公用。我们可以键入如下的代码来加强我们的类

	PublicclassMyCounter 
	PrivateSharedmintCountAsInteger 
	PublicSubNew() 
	mintCount+=1 
	EndSub 
	PublicReadOnlyPropertyCount()AsInteger 
	Get 
	ReturnmintCount 
	EndGet 
	EndProperty 
	EndClass
  • 分析:当我们为类创建了实例时,计数器就增一。+=操作符是一个在VB.NET新有的。在任何时候我们可以通过Count属性来取出count数值。这样,如果我们运行下面的客户代码,我们可以得到结果为3。
	ProtectedSubButton4_Click(ByValsenderAsObject,_ 
	ByValeAsSystem.EventArgs) 
	DimobjAsMyCounter 
	obj=NewMyCounter() 
	obj=NewMyCounter() 
	obj=NewMyCounter() 
	MsgBox(obj.Count,MsgBoxStyle.information,counter) 
	EndSub

如果我们再次运行这段程序,将可以得到6、9等等。只要我们的应用程序继续运行计数器就保持有效,也就是说一旦我们结束应用程序计数器就不再起作用。

这项计数对于服务器的处理过程是十分有用的,因为它可以轻松地不停地进行计数。这个数值只有在处理过程重新开始地时候才被复位。

全局变量

	PublicclasstheClass 
	PublicSharedMyGlobalAsInteger 
	EndClass

我们可以在客户代码中使用这个变量。

	TheClass.MyGlobal+=5

这个变量将在我们应用程序的任何地方都是有效的,它提供了一个很好的机理来在组件、类、模块等等之间来共享数值。


这是我根据自己的需求从网上查询了一些资料,并进行了整理,望读者批评指正

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐