看起来你已经在这里在类之外声明了一个共享变量。共享变量仅用于类的实例。例如,如果你想跟踪有多少类有实例,你会在类中声明一个共享变量类似这样的控制台应用程序
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
你确定要声明一个共享变量而不是静态变量吗? –