共用方式為


Visual Basic 的共用成員

更新:2007 年 11 月

共用成員是指類別或結構的所有執行個體共用的屬性、程序和欄位。某些程式語言將此項目稱為靜態成員。

共用欄位和屬性

當您的資訊是屬於類別一部分但不特定屬於類別的某個執行個體時,共用欄位和屬性就很有用。變更共用欄位和屬性的值時,就會變更類別和類別之所有執行個體的關聯值。

另一方面,變更與任何一個執行個體有關的非共用欄位值或屬性值,並不會影響該欄位或屬性在類別的其他執行個體中的值。非共用欄位和屬性是否存在,與類別的任何執行個體都無關。

照此看來,共用欄位和屬性就跟僅能從類別的執行個體加以存取的全域變數一樣,或具有類別名稱的限定性條件。如果沒有共用欄位和屬性,您將需要使用模組層次的變數來達到同樣效果。但模組層次的變數會讓您的類別很難瞭解且不易維護。甚至,依此方式使用模組層次變數會違反類別代表的封裝觀念。

共用程序

共用程序是與類別特定執行個體無關的類別方法。例如,Math 類別內所定義的 Cos 方法是共用的方法。呼叫共用程序時您可以用物件方法來呼叫或直接從類別呼叫。

共用程序和屬性沒有類別的執行個體存取權限。因此,共用方法只允許對非共用資料成員的限定參考。

注意事項:

建議您不要撰寫透過類別的執行個體來存取共用成員的程式碼。這是因為編譯器會忽略共用成員的資格,並將它當做是可透過類別直接存取的。在某些情況下,您可能想讓合格的物件執行某些程式碼,因此在透過類別的執行個體存取共用成員時,Visual Basic 編譯器可能會產生警告。IntelliSense 不會顯示類別之執行個體的共用成員。

共用成員範例

以下範例建立了共用欄位、兩個執行個體欄位和一個共用方法,示範共用成員在程式碼中如何運作:

Public Class Item
    Public Shared Count As Integer = 1
    Public Shared Sub ShareMethod()
        MsgBox("Current value of Count: " & Count)
    End Sub

    Public Sub New(ByVal Name As String)
        ' Use Count to initialize SerialNumber.
        Me.SerialNumber = Count
        Me.Name = Name
        ' Increment the shared variable
        Count += 1
    End Sub
    Public SerialNumber As Integer
    Public Name As String
    Public Sub InstanceMethod()
        MsgBox("Information in the first object: " & _
            Me.SerialNumber & vbTab & Me.Name)
    End Sub
End Class

Sub TestShared()
    ' Create two instances of the class.
    Dim part1 As New Item("keyboard")
    Dim part2 As New Item("monitor")

    part1.InstanceMethod()
    part2.InstanceMethod()
    Item.ShareMethod()
End Sub

執行 TestShared 程序時,會建立類別的兩個執行個體。建構函式會使用共用欄位 Count 來初始化執行個體欄位 SerialNumber,再遞增 Count。這種技術會自動提供給每一個執行個體不同的序號。

建立兩個執行個體後,會在兩個物件上呼叫執行個體方法 InstanceMethod,也會呼叫共用方法 ShareMethod。輸出如下:

Information in the first object: 1 keyboard

Information in the second object: 2 monitor

Current value of the shared Count field: 3

請參閱

概念

結構和類別

參考

Dim 陳述式 (Visual Basic)

Cos

其他資源

類別屬性、欄位和方法

結構:您自己的資料型別