10.5 类的初始化顺序
类的初始化顺序是:
(1)首先,初始化类的实例字段;
(2)其次,调用基类的构造函数,没有明确的基类则调用System.Object的构造函数;
(3)最后,调用类自己的构造函数。
如图10-3所示。
图 10-3 类的初始化顺序
下面,我们通过一个实例来了解这种初始化顺序,如代码清单10-6所示。
代码清单10-6 类的初始化顺序
1 using System;
2
3 namespace ProgrammingCSharp4
4{
5 class BaseClass
6{
7 public BaseClass()
8{
9 Console.WriteLine(“基类构造函数被调用”);
10}
11}
12
13 class ChildClass:BaseClass
14{
15 public bool FieldA=true;
16 public bool FieldB;
17 public ChildClass()
18{
19 Console.WriteLine(“自己的构造函数被调用”);
20}
21
22 public void Print()
23{
24 Console.WriteLine(FieldA);
25 Console.WriteLine(FieldB);
26}
27}
28
29 class ClassExample
30{
31 public static void Main()
32{
33 ChildClass child=new ChildClass();
34 child.Print();
35}
36}
37}
我们在第33行初始化了类ChildClass,它的基类是BaseClass,那么它的初始化顺序如表10-5所示。
代码清单10-6 的运行结果为:
基类构造函数被调用
自己的构造函数被调用
True
False