C#静态构造函数排序[关闭]
Posted
技术标签:
【中文标题】C#静态构造函数排序[关闭]【英文标题】:C# static constructor ordering [closed] 【发布时间】:2011-11-05 22:39:42 【问题描述】:我很好奇静态和实例构造函数的触发顺序。有人可以告诉我火下构造函数的顺序来帮助我吗?
对于静态构造函数的执行顺序,这种行为背后的解释是什么?
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();
【问题讨论】:
你没有编译器吗? LinqPad 可以轻松测试这样的代码。 【参考方案1】:顺序是: C、B、A 静态演员。 A、B、C、默认角色:
更新:另请参阅 Eric Lippert 的这篇精彩博文(Part1 和 Part2),了解为什么静态类初始化程序的运行顺序与 ctor 的相反。
【讨论】:
【参考方案2】: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
【讨论】:
对于静态构造函数的执行顺序,这种行为背后的解释是什么? 查看我的回答中的更新以获取有关此主题的更多背景信息。 我需要一个简单易懂的解释。以上是关于C#静态构造函数排序[关闭]的主要内容,如果未能解决你的问题,请参考以下文章