我很好奇静态和实例构造函数被触发的顺序。有人可以通过让我知道下面的施工人员的命令来帮助我吗?
对于静态构造函数的执行顺序,这种行为背后的解释是什么?
class A
{
static A()
{
Console.WriteLine("I am in A's Static Constructor");
}
A()
{
Console.WriteLine("I am in A's Default Constructor");
}
}
class B:A
{
static B()
{
Console.WriteLine("I am in B's Static Constructor");
}
B()
{
Console.WriteLine("I am in B's Default Constructor");
}
}
class C:B
{
static C()
{
Console.WriteLine("I am in C's Static Constructor");
}
C()
{
Console.WriteLine("I am in C's Default Constructor");
}
}
以下声明的输出结果如何:
C c = new C();
答案 0 :(得分:3)
订单是: C,B,A静态ctors。 A,B,C,默认ctors:
更新:另请参阅Eric Lippert撰写的这篇精彩博文(Part1和Part2),了解为什么静态类初始化程序的运行顺序与ctors相反。
答案 1 :(得分:3)
I am in C's Static Constructor
I am in B's Static Constructor
I am in A's Static Constructor
I am in A's Default Constructor
I am in B's Default Constructor
I am in C's Default Constructor