看起來你已經在這裏在類之外聲明瞭一個共享變量。共享變量僅用於類的實例。例如,如果你想跟蹤有多少類有實例,你會在類中聲明一個共享變量類似這樣的控制檯應用程序
Sub Main()
Dim t1 As New testclass
Dim t2 As New testclass
Console.WriteLine(t2.Count)
Console.ReadKey()
End Sub
Private Class testclass
Private Shared instanceCount As Integer
Public Sub New()
instanceCount += 1
End Sub
Public ReadOnly Property Count
Get
Return instanceCount
End Get
End Property
End Class
你最終得到的是被寫入到控制檯。而共享變量只能由TestClass的每個實例訪問。
OK靜態變量就像過程中聲明的局部變量。但是,對於常規局部變量,當過程完成時,局部變量將被銷燬。靜態變量繼續存在並保留其最新值。下次您調用相同的過程時,靜態變量不會再次聲明並重新初始化,因爲它仍然存在並且包含您分配給它的最新值。一個靜態變量只有在它被定義的類或模塊被銷燬時才被銷燬。
所以,你的代碼也許應該是
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
Static Dim craftability As String = "Craftable"
If CheckBox1.Checked = True Then
craftability = "Non-Craftable"
Else
craftability = "Craftable"
End If
然而,看着您提供的代碼,如果你想craftability到整個類是可用的,那麼就宣告它,你已經做 - 外部分,但沒有共享關鍵字。不知道你想如何使用craftability,我不敢更準確。希望這有助於
在CheckBox1_CheckedChanged中設置一個斷點,以查看是否真的賦予了craftability的值。另外,確保只聲明一個可加工性實例。 – xpda
使用類名訪問共享變量。 'ClassWhereVariableDefined.craftability'。 – Fabio
你確定要聲明一個共享變量而不是靜態變量嗎? –