C# 派生的。<;来自基础的静态变量>;不';t调用派生的';s静态构造函数
为什么在下面的代码中没有调用派生中的静态构造函数C# 派生的。<;来自基础的静态变量>;不';t调用派生的';s静态构造函数,c#,constructor,static,C#,Constructor,Static,为什么在下面的代码中没有调用派生中的静态构造函数 class Base { public static Base Instance; static Base() { Console.WriteLine("Static Base invoked."); } } class Derived : Base { static Derived() { Instance = new Derived(); Console.WriteLine("Sta
class Base
{
public static Base Instance;
static Base() { Console.WriteLine("Static Base invoked."); }
}
class Derived : Base
{
static Derived() {
Instance = new Derived();
Console.WriteLine("Static Derived invoked.");
}
}
void Main()
{
var instance = Derived.Instance;
}
OUTPUT:
Static Base invoked.
这是因为通过派生类访问基类的静态成员实际上是通过基类(声明该成员的基类)进行编译的 因此,这:
Derived.Instance
实际上是这样编译的:
Base.Instance
因此,没有代码与派生的相接触,这就是它的静态构造函数没有被调用的原因
以下是编译主方法的方式(发布):
这是因为通过派生类访问基类的静态成员实际上是通过基类(声明该成员的基类)进行编译的 因此,这:
Derived.Instance
实际上是这样编译的:
Base.Instance
因此,没有代码与派生的相接触,这就是它的静态构造函数没有被调用的原因
以下是编译主方法的方式(发布):
我在C#规范中找不到正确的段落。我很确定它就在那里,我只是找不到合适的短语来搜索。我在C#规范中找不到合适的段落。我很确定它就在那里,我就是找不到合适的短语来搜索。