派生。<static variable =“”from =“”base =“”>不调用派生的静态构造函数

时间:2017-08-01 08:54:08

标签: c# constructor static

为什么在以下代码中调用Derived中的静态构造函数?

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.

1 个答案:

答案 0 :(得分:2)

这是因为通过派生类访问基类的静态成员实际上是编译为通过基类,即声明该成员的基类。

因此,这个:

$('#city').parent().prev('td').find("label").text();

实际上是这样编译的:

Derived.Instance

因此没有代码触及Base.Instance ,这就是为什么不调用静态构造函数的原因。

以下是您的Main方法的编译方式(发布):

Derived