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

Does every type have static constructor?

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

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

此类型是否具有在后台自动调用的静态构造函数?

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

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

If you don't provide a static constructor to initialize static fields, all static fields are initialized to their default value as listed in Default values of C# types.

这表明并不总是需要静态构造函数,并且 CLR 具有默认行为。

The presence of a static constructor prevents the addition of the BeforeFieldInit type attribute. This limits runtime optimization.

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

也就是说,任何 class 或结构都可以有一个静态构造函数,无论它是否有任何静态成员。不过好像你不写编译器不会自动生成