共享成员

前端之家收集整理的这篇文章主要介绍了共享成员前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

共享成员就是被类的实例所共享的属性、过程、字段等等。在vb.net的继承中,在所有的类的实例中把一个数据成员或函数的一个单独的实例设置成共享是非常有用的。共享成员独立于任何一个特定的类的实例。共享的过程在对象中必须显式的声明。由于这个原因,在共享方法中,引用不共享的成员是允许的。公有的共享的成员可以远程的访问,并且可以在对象中后期绑定。
注意:在其他的编程语言中,共享成员也被称为Static或者class成员。
有一个类库,该类库含有一些附加的过程,这些过程对于这个类库而言是一些概念性的部分,需要单独运行,并需要用户去声明这个类中的一些类型。
假设开发了一个应用程序,它需要知道有多少个用户现在登录了该应用程序。当用户安装了用户的应用程序后,注册信息被写入了注册表,而且用户的运行程序每次在运行的时候都要访问用户声明的UserInfo对象。一个Long型共享成员UserCount就可以跟踪用户的个数,并且用一个属性CanCreateUser来检查UserCount共享成员,是否要声明已经达到了登录人数的极限最大值,并且初始化UserInfo的值来决定是让用户进入。
用户也可以在以下情况使用共享成员,假设有很多对象,而且这些对象需要共享一些信息。例如,假设已经建立了一个制定行程计划的软件用来计算所选择的一个旅游城市离国会大厦是不是中100里之内。在City类中有Latitude和Longitude成员。对于半径在100里之内的城市,City的共享的NearCapitol属性为"Incremented",而对于半径在100里之外的城市,City的共享的NearCapitol属性为"Decremented".
在以上这些情况时,如果没有这些共享成员的话,需要建立一个a.bas模块来记录这些信息,这样做可能会给代码的维护带来一些困难,而且理解类也会更加困难.在一个类中保留共享成员会是用户更好地理解它们的目的.而且在工程中,也将会更好地重用这些代码.
下面这个例子声明了一个具有一个属性和共享数据成员的类.当用户运行这个程序的时候,每一个PortDescriptor类的对象均有一个惟一的"Descript"属性,但是共享着一个共享的数据成员Load,在对象PD1中改变Load属性的话将会改变对象PD2的属性"Load"的值,其代码如下:

Imports system
Namespace ANameSpace
Module Module1
Class PortDescriptor
Public Shared Load as Integer
Private strDesc as String
Property descript as String
Get
descript=strDesc
End Get
Set
strDesc=Value
End Set
End Property
End Class
Shared Sub Main()
Dim PD1 as PortDescriptor=New PortDescriptor
Dim PD2 as PortDescriptor=New PortDescriptor
PD1.descript="Idle"
PD1.Load=80
Console.WriteLine("PD1 Descript=:"&PD1.descript)
Console.WriteLine("PD1 Load=:"&PD1.Load)
Pd2.descript="Activr"
Pd2.Load=540
Console.WriteLine("PD2 Descript=:"&Pd2.descript)
console.WriteLine("PD2 Load=:"&PD2.Load)
Console.WriteLine("PD1 Descript now=:"&Pd1.descript)
Console.WriteLine("PD1 Load now=:"&PD1.Load)
End Sub
End Module
End Namespace
本文来自编程入门网:http://www.bianceng.cn/Programming/VB_NET/200705/1237.htm

猜你在找的VB相关文章