程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB.NET >> vb.net的共享成員(Share Members)

vb.net的共享成員(Share Members)

編輯:VB.NET

共享成員就是被類的實例所共享的屬性、過程、字段等等。在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
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved