我有一个VB.NET项目,有2个这样的类。一个Base和一个派生的,包含在单独的项目DLL中。
Public Class BaseClass
Public Shared label_ As String
End Class
Public Class Derived
Inherits BaseClass
Shared Sub New()
BaseClass.label_ = "Some Label"
End Sub
Public Shared Sub Dump()
End Sub
End Class
为了测试我创建的代码
Sub Main()
'Shared label is Nothing here?
Console.WriteLine(Derived.label_)
'Shared label is assigned here as shared constructor is called
Derived.Dump()
Console.WriteLine(Derived.label_)
End Sub
我发现只有在调用实例方法或调用任何其他静态方法时才会调用派生类中的共享构造函数?
我的理解是,在运行应用程序时会调用共享构造函数吗?
答案 0 :(得分:2)
在创建第一个实例或引用任何静态成员之前,会自动调用静态构造函数来初始化类,而不是在应用程序运行时。
你无法知道调用共享构造函数的确切时刻,你不应该对它做出假设,但MSDN确保这些点: