每个类型都有静态构造函数吗



根据文档:静态构造函数是自动调用的。它在创建第一个实例或引用任何静态成员之前初始化类。

这是否意味着每个类型(有或没有静态成员(都有静态构造函数?或者静态构造函数出现在具有静态成员或显式定义的类型中?

这种类型有在后台自动调用的静态构造函数吗?

class Test
{
public Test()
{
System.Console.WriteLine("Type initialized!");
}     
}

从文档中引用,答案似乎是NO,只有显式编写静态构造函数的类型才有。这暗示了两点:

如果不提供静态构造函数来初始化静态字段,则所有静态字段都将初始化为C#类型的默认值中列出的默认值。

这表明静态构造函数并不总是必需的,CLR会设置默认行为。

静态构造函数的存在阻止添加BeforeFieldInit类型属性。这限制了运行时优化。

这表明CLR可以将其在resopnse中的行为更改为存在(或不存在(静态构造函数。

也就是说,任何类或结构都可以有一个静态构造函数,无论它是否有任何静态成员。但如果你不写,编译器似乎不会自动生成一个