gpt4 book ai didi

c# - 静态构造函数的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 19:37:28 26 4
gpt4 key购买 nike

我有以下类型:

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???");
}
}

为什么静态构造函数只在某些方法被调用时被调用

最佳答案

A static constructor is used to initialize any static data, or to perform a particular action that needs to be performed once only. It is called automatically before the first instance is created or any static members are referenced.

Source

静态构造函数仅在需要时调用。在您的第二个示例中,不需要它,因为没有创建实例,也没有引用任何静态成员。

该页面继续列出静态构造函数的一些其他属性。最值得注意的是:

  • A static constructor cannot be called directly.
  • The user has no control on when the static constructor is executed in the program.

因此,虽然引用的 MSDN 页面上的摘要指出它在引用任何静态成员之前被调用,但您不能保证确切的调用时间。因此,您可能应该注意在构造函数中执行的代码。

关于c# - 静态构造函数的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38022654/

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