gpt4 book ai didi

.net - DLL 中未调用 VB.NET 静态构造函数

转载 作者:行者123 更新时间:2023-12-05 05:27:57 26 4
gpt4 key购买 nike

我有一个 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

我发现派生类中的共享构造函数仅在调用实例方法或调用任何其他静态方法时调用?

我的理解是Shared Constructor是在应用运行的时候调用的?

最佳答案

在创建第一个实例或引用任何静态成员之前自动调用静态构造函数来初始化类,而不是在应用程序运行时。

你无法知道调用共享构造函数的确切时刻,你不应该对此做出假设,但 MSDN 确保了以下几点:

  1. 共享构造函数在类类型的任何实例被调用之前运行已创建。
  2. 共享构造函数在访问结构类型的任何实例成员之前运行,或者在显式调用 structure.Type 的任何构造函数之前运行。调用为结构创建的隐式无参数构造函数不会导致共享构造函数运行。
  3. 共享构造函数在任何类型的共享成员之前运行被引用。
  4. 共享构造函数在加载派生自该类型的任何类型之前运行。
  5. 一个共享的构造函数不会在单个过程中运行多次执行程序。

关于.net - DLL 中未调用 VB.NET 静态构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14998747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com