.ctor 构造函数,在类被实例化时,它会被自动调用。
.cctor 类型初始化器,是一个静态方法,无参数无返回值,不能直接调用,最多只有一个
在继承中对象构造过程,看下面这段程序:
public class A
{
public int x = 1;
public A() { m1(); }
public void m1() { }
}
public class B : A
{
public int y = 2;
public static string sb = "B";
public B() { m2(); }
public void m2() { }
}
public class C : B
{
public int z = 3;
public static string sc = "C";
public C() { m3(); }
public void m3() { }
}
可以看到三者都有一个.ctor,B、C中有.cctor,而A没有,打开B,C的.cctor,可以看到它们都负责初始化自己的静态字段,现在主要来看它们的.ctor。
总结
- .ctor是构造方法;
- .cctor是类型初始化器,在C#中也就是静态构造函数;
- 当类C实例化时,会先对声明时就进行赋值的字段赋值,然后调用基类的构造函数,基类再以同样的方法构造自己,一直到顶层的System.Object,然后再回来执行C的显式构造方法中的代码,就是这么一个递归的过程。