好多面试倾向于考这种绕来绕去的问题,我觉得挺无聊的,先记下来,避免以后没事又考着玩。
class A{ static string a1="im a1"; public string a2 = "im a2"; static A(){ Console.WriteLine(a1); } public A(){ Console.WriteLine(a2); } } class B:A{ static string b1="im b1"; public string b2="im b2"; public B(){ Console.WriteLine(b2); } static B(){ Console.WriteLine(b1); } }
有这么两个类
实例化B后的结果
var b = new B()
im b1
im a1
im a2
im b2
也就是说先执行B的静态方法
然后执行父类A的静态方法
接下来是A的实例方法
最后是B的实例方法
看起来挺奇怪的,也就是说,先执行静态方法,静态构造函数从子类到父类,然后执行实例方法,从父类再到子类。
上面这个调试用的dotnet core 2.0