2

我已将断点放入“get”

static readonly LawClass s_Law = new LawClass();
public static LawClass Law { get { return s_Law; } }

并发现 s_law 为空。

这怎么可能?我认为静态变量是在第一类访问之前按行顺序初始化的。

4

2 回答 2

4

这只是一个猜测,但来自http://msdn.microsoft.com/en-us/library/aa645758(v=vs.71).aspx

如果类中存在静态构造函数(第 10.11 节),则在执行该静态构造函数之前立即执行静态字段初始值设定项。否则,静态字段初始化器在第一次使用该类的静态字段之前的依赖于实现的时间执行

如果您在属性 getter 上中断,则尚未访问静态支持字段,因此可能已经或可能未初始化。

于 2012-07-23T18:29:39.083 回答
0

Thank you guys for help! I looked at stack trace and found out I had some crazy recursion in my static variables initialization order. So I simplified the code and now it works.

于 2012-07-24T04:34:22.093 回答