VB.NET共享成員需要在何種情況下使用
VB.NET作為一款優(yōu)秀的面向?qū)ο笳Z(yǔ)言,其中擁有很多獨(dú)特的性質(zhì)吸引著開(kāi)發(fā)人員去使用它來(lái)完成程序開(kāi)發(fā)。其中VB.NET共享成員就是被類(lèi)的實(shí)例所共享的屬性、過(guò)程、字段等等。在VB.NET的繼承中,在所有的類(lèi)的實(shí)例中把一個(gè)數(shù)據(jù)成員或函數(shù)的一個(gè)單獨(dú)的實(shí)例設(shè)置成共享是非常有用的。#t#
共享成員獨(dú)立于任何一個(gè)特定的類(lèi)的實(shí)例。共享的過(guò)程在對(duì)象中必須顯式的聲明。由于這個(gè)原因,在共享方法中,引用不共享的成員是允許的。公有的共享的成員可以遠(yuǎn)程的訪問(wèn),并且可以在對(duì)象中后期綁定。
注意:在其他的編程語(yǔ)言中,VB.NET共享成員也被稱(chēng)為Static或者class成員。
有一個(gè)類(lèi)庫(kù),該類(lèi)庫(kù)含有一些附加的過(guò)程,這些過(guò)程對(duì)于這個(gè)類(lèi)庫(kù)而言是一些概念性的部分,需要單獨(dú)運(yùn)行,并需要用戶去聲明這個(gè)類(lèi)中的一些類(lèi)型。
假設(shè)開(kāi)發(fā)了一個(gè)應(yīng)用程序,它需要知道有多少個(gè)用戶現(xiàn)在登錄了該應(yīng)用程序。當(dāng)用戶安裝了用戶的應(yīng)用程序后,注冊(cè)信息被寫(xiě)入了注冊(cè)表,而且用戶的運(yùn)行程序每次在運(yùn)行的時(shí)候都要訪問(wèn)用戶聲明的UserInfo對(duì)象。一個(gè)Long型共享成員UserCount就可以跟蹤用戶的個(gè)數(shù),并且用一個(gè)屬性CanCreateUser來(lái)檢查UserCount共享成員,是否要聲明已經(jīng)達(dá)到了登錄人數(shù)的極限***值,并且初始化UserInfo的值來(lái)決定是讓用戶進(jìn)入。
用戶也可以在以下情況使用VB.NET共享成員,假設(shè)有很多對(duì)象,而且這些對(duì)象需要共享一些信息。例如,假設(shè)已經(jīng)建立了一個(gè)制定行程計(jì)劃的軟件用來(lái)計(jì)算所選擇的一個(gè)旅游城市離國(guó)會(huì)大廈是不是中100里之內(nèi)。在City類(lèi)中有Latitude和Longitude成員。對(duì)于半徑在100里之內(nèi)的城市,City的共享的NearCapitol屬性為"Incremented",而對(duì)于半徑在100里之外的城市,City的共享的NearCapitol屬性為"Decremented".
在以上這些情況時(shí),如果沒(méi)有這些VB.NET共享成員的話,需要建立一個(gè)a.bas模塊來(lái)記錄這些信息,這樣做可能會(huì)給代碼的維護(hù)帶來(lái)一些困難,而且理解類(lèi)也會(huì)更加困難.在一個(gè)類(lèi)中保留共享成員會(huì)是用戶更好地理解它們的目的.而且在工程中,也將會(huì)更好地重用這些代碼.
下面這個(gè)例子聲明了一個(gè)具有一個(gè)屬性和共享數(shù)據(jù)成員的類(lèi).當(dāng)用戶運(yùn)行這個(gè)程序的時(shí)候,每一個(gè)PortDescriptor類(lèi)的對(duì)象均有一個(gè)惟一的"Descript"屬性,但是共享著一個(gè)共享的數(shù)據(jù)成員Load,在對(duì)象PD1中改變Load屬性的話將會(huì)改變對(duì)象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共享成員的具體使用方式就為大家介紹到這里。