首页 > OOP语言 > VB.net > 正文

vb.net的共享成员(Share Members)
2007-05-24 00:00:00   来源:www.bianceng.cn   评论:0 点击:

暂时无描述信息

共享成员就是被类的实例所共享的属性、过程、字段等等。在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

相关热词搜索:

上一篇:vb.net的面向对象性
下一篇:类模块和标准代码模块的区别和比较

分享到: 收藏