根据文档:
静态构造函数用于初始化任何静态数据,或执行只需执行一次的特定操作。它被自动调用before创建第一个实例或引用任何静态成员.
但我在 stackoverflow 帖子中看到了以下来自 C# 规范的引用:
如果类中存在静态构造函数(第 10.12 节),则立即执行静态字段初始值设定项prior执行该静态构造函数。
这是矛盾的,我不明白静态构造函数和静态成员初始化哪个先出现。
考虑这个类:
public static class TestStatic
{
public static int SomeValue = GetValue();
static TestStatic()
{
Console.WriteLine("Constructor");
}
}
还有这个支撑方法:
public static int GetValue()
{
Console.WriteLine("GetValue");
return 5;
}
如果您运行此代码:
Console.WriteLine(TestStatic.SomeValue);
您将得到的输出是:
GetValue
Constructor
5
所以你可以看到你发布的两种说法都是正确的。构造函数在静态成员之前调用(SomeValue
) 被引用,并且静态字段初始值设定项在构造函数之前被调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)