代码进一步说明: * (1)①②③……为执行顺序 
* (2)输出结果: 
* static A() 
* static B() 
* X = 1, Y = 2 
***************************************************/ 
using System; 
class A 

  public static int X; 
  static A() //④ 执行完后返回到③ 
  { 
    X = B.Y + 1; 
    Console.WriteLine("static A()"); 
  } 

class B 
{                                     
  public static int Y = A.X + 1; //③ 调用了A的静态成员,          第三步
  // 转到A的静态构造函数---->                                           到A的静态构造函数初始化X时,X=B.Y+1, B.Y不知道                                                                                 啊感觉成了死调用了 不明白
  static B() //② 如果带有初始值设定项的静态字段,                   
  // 执行该类的静态构造函数时, 
  // 先要按照文本顺序执行那些初始值设定项。 
  // 转到初始值设定项----> 
  { 
    Console.WriteLine("static B()"); 
  } 
  static void Main() //① 程序入口, 
  // 如果类中包含用来开始执行的 Main 方法, 
  // 该类的静态构造函数将在调用 Main 方法之前执行。 
  // 转到B的静态构造函数----> 
  { 
    Console.WriteLine("X = {0}, Y = {1}", A.X, B.Y);//⑤ 输出结果 
    Console.ReadLine(); 
  }