c# - 静态变量顺序

标签 c# .net 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);
  }
}

输出是:

v2=15

但是当我像这样更改静态变量声明顺序时:

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


      static void Main(string[] args) {
       Console.WriteLine("v2 = "+v2);
      }
    }

输出是:

v2 = 0

为什么会这样?

最佳答案

静态字段的初始化顺序与声明的顺序相同。当你用v1的值初始化v2时,v1还没有初始化,所以它的值为0。

关于c# - 静态变量顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15388793/

相关文章:

.net - 是否有比 ASP.NET 成员(member)提供程序更现代的成员(member)/安全实现

c++ - 重载函数中的静态变量

c# - 访问 Custom.Configuration 文件中的 AppSettings (CS0122)

c# - 在 C# 中声明我的第二个方法时,出现错误 "Static local functions is not available in c# 7.3"

c# - 如果对象的实例为空,是否可以修改检查时返回的 bool 值?

c++ - 声明对另一个类的模板化成员数组的模板化成员引用

c++ - 在 Visual Studio 2017 中创建的简单 DLL 不会在 XP 中加载

c# - 在运行时转换为多个(未知类型)

c# - [Flags] 属性的真正作用是什么?

.net - 在 2 台机器上生成的 .tlh 不同