using System;class A{ public static int X; static A() { X = B.Y + 1; }}class B{ public static int Y = A.X + 1; static B() {} static void Main() { Console.WriteLine("X = {0}, Y = {1}", A.X, B.Y); }}产生输出
X = 1, Y = 2要执行 Main 方法,系统在运行类 B 的静态构造函数之前首先要运行 B.Y 的初始值设定项。因为引用了 A.X 的值,所以 Y 的初始值设定项导致运行 A 的静态构造函数。这样,A 的静态构造函数将继续计算 X 的值,从而获取 Y 的默认值 0,而 A.X 被初始化为 1。这样就完成了运行 A 的静态字段初始值设定项和静态构造函数的进程,控制返回到 Y 的初始值的计算,计算结果变为 2。