繁体   English   中英

静态构造函数的奇怪行为

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM