谈谈C#中类成员的执行顺序.
时间:2011-03-25 来源:ustbwuyi
今天我们来谈谈C#中子类和父类中静态成员以及构造函数的执行顺序,这个地方向来是初学C#的人比较迷惑的地方,也是各大公司最喜欢拿来出面试题的地方。
下面我们分情况来分析。
1. 父类和子类中构造函数和静态构造函数的执行顺序。
对于单个的类,它的静态构造函数将先于构造函数执行,因为构造函数需要在实例化该类的时候执行,而静态构造函数访问该类的同时就开始执行。
而对于有继承关系的父类和子类来说,父类的构造函数先于子类的构造函数执行,简而言之就是被依赖的先构造,依赖于人的后构造。
我们来看实例。
我们为父类和子类分别定义静态构造函数和无参构造函数。
public class Parent{
static Parent()
{
Console.WriteLine("Parent Static Constructor");
}
public Parent()
{
Console.WriteLine("Parent Constructor")
}
}
定义一个子类继承于该父类。
public class Child : Parent{
static Child()
{
Console.WriteLine("Child Static Constructor");
}
public Child()
{
Console.WriteLine("Child Constructor");
}
}
那么当我们实例化Child类的时候会如何输出呢?
static void Main(string[] args){
Child child = new Child();
Console.Read();
}
结果如下:
这个结果很好解释,我们实例化子类,所以静态构造函数在访问类的时候同时访问,所以先执行子类的静态构造函数,而Child类依赖于Parent类,所以接下来执行Parent类的构造函数。
两个类的静态构造函数执行完毕后分别执行父类的构造函数和子类的构造函数。
相关阅读 更多 +