何时创建和销毁共享(静态)变量。例如,看看下面的代码:
Imports System.Data.SqlClient
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Person.testCon = New SqlConnection
Person.Age = 30
Dim p1 As Person
End Sub
End Class
Imports System.Data.SqlClient
Public Class Person
Public Shared testCon As SQLConnection
End Class
在创建Person的第一个实例之前,可以从Form_Load访问testCon变量。我意识到将连接作为共享变量可能不是一种好习惯,但我希望得到我的观点。我还想知道变量何时创建和销毁,如果它们是基元(如示例中的Person.Age)
答案 0 :(得分:0)
根据Microsoft,共享变量的生效期限为应用程序的长度。
但是,对象类型变量只有在您告诉它们时才会被实例化。
您可以通过创建新的测试类来验证此行为:
Public Class Class1
Sub New()
System.Diagnostics.Debug.Fail("Class Created")
End Sub
End Class
然后为这个类创建一个共享变量作为另一个类中的成员变量:
Private Shared m_TestClass As Class1
如果不访问共享变量,则不会执行Debug.Fail语句。但是,只要你实例化这个类并分配它,它就会被触发(就像任何其他对象一样):
m_TestClass = New Class1
共享变量一直存在,直到它们所在的AppDomain被卸载。
您还可以通过使用类似的Debug.Fail语句向测试类添加Finalize语句来测试它。
生命周期是在为对象类型共享变量分配新值时应使用SyncLock的一个原因。