根据“C# 语言规范。版本 5.0”的“10.12 静态构造函数”部分,静态构造函数可以用“extern”修饰符标记,在这种情况下,它被称为外部静态构造函数。
普通(非外部)静态构造函数是众所周知的。它们用于初始化静态字段和属性。
外部静态方法通常用于通过 P/Invoke 调用本机函数。
而且我也知道相当深奥的外部构造函数(另见这个问题)。例如,String
类有几个这样的声明,这些构造函数是由运行时实现的。
但是外部静态构造函数有真正的用途吗?我搜索了coreclr repo,一无所获。语言规范无法描述一些从未在野外使用过的构造。或者可以吗?
我的猜测:C# 有外部静态构造函数只是因为 CLR 支持它们(原则上)。