现在的位置: 首页 > 综合 > 正文

通过一道笔试题理解c#静态构造函数

2013年09月22日 ⁄ 综合 ⁄ 共 579字 ⁄ 字号 评论关闭

 今天看到了一道c#笔试题,是关于静态字段和静态构造函数初始化的。静态函数是c#新的特性,如果不知道它的初始化顺序就会对这道题晕头转向。对于静态构造函数可以参考http://www.cnblogs.com/michaelxu/archive/2007/03/29/693401.html。下来从这道笔试题来分析一下静态构造函数的初始化顺序。

产生的输出结果是什么?

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,就得到了以前你不知道怎么来的结果

抱歉!评论已关闭.