静态变量顺序

use*_*292 5 .net c# static-variables

我对C#中静态变量声明的顺序有疑问

当我运行此代码时:

static class Program {
  private static int v1 = 15;
  private static int v2 = v1;

  static void Main(string[] args) {
   Console.WriteLine("v2 = "+v2);
  }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

v2=15
Run Code Online (Sandbox Code Playgroud)

但是,当我更改静态变量声明顺序时,如下所示:

 static class Program {
      private static int v2 = v1;
      private static int v1 = 15;


      static void Main(string[] args) {
       Console.WriteLine("v2 = "+v2);
      }
    }
Run Code Online (Sandbox Code Playgroud)

输出是:

v2 = 0
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

Tho*_*que 10

静态字段的初始化顺序与声明的顺序相同.当你初始化v2与价值v1,v1是尚未初始化,所以它的值是0.