通过一道笔试题理解c#静态构造函数
今天看到了一道c#笔试题,是关于静态字段和静态构造函数初始化的。静态函数是c#新的特性,如果不知道它的初始化顺序就会对这道题晕头转向。对于静态构造函数可以参考http://www.cnblogs.com/michaelxu/archive/2007/03/29/693401.html。下来从这道笔试题来分析一下静态构造函数的初始化顺序。
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
产生的输出结果是什么?
1先调用Main函数,它是B的静态方法,当第一次调用一个类中任何静态成员时就会调用静态构造函数,在此之前要为B中静态字段Y分配内存,执行代码第11行
2执行第一步时调用了A的静态成员X,就触发了A的静态构造函数的调用,执行代码第6行,这行又出现B静态字段Y,由于Y还没有初始化,默认为0,因此这一行X=1
3运行完A静态构造函数后回到第11行,Y=2
4运行完B的静态构造函数后回到Main,执行代码第15行,打印A.X和B.Y,就得到了以前你不知道怎么来的结果