[英]Strange behavior of static constructors
我有以下类型:
internal struct TestStruct
{
static TestStruct()
{
Console.WriteLine("Constructor has been called!");
}
public void SomeMethod()
{
}
}
internal struct OtherTestStruct
{
static OtherTestStruct()
{
Console.WriteLine("This never gets displayed. But why???");
}
}
为什么只有在调用某个方法时才调用静态构造函数?
静态构造函数用于初始化任何静态数据,或执行仅需要执行一次的特定操作。 在创建第一个实例或引用任何静态成员之前自动调用它。
只在需要时调用静态构造函数。 在第二个示例中,不需要它,因为没有创建实例,也没有引用任何静态成员。
该页面继续列出静态构造函数的一些其他属性。 最值得注意的是:
- 无法直接调用静态构造函数。
- 用户无法控制何时在程序中执行静态构造函数。
因此,虽然引用的MSDN页面上的摘要声明在引用任何静态成员之前调用它,但您无法确切地确定何时可能。 因此,您可能应该注意在构造函数中执行的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.