【问题标题】:Order of static variable declaration [duplicate]静态变量声明的顺序[重复]
【发布时间】:2017-05-18 02:33:22
【问题描述】:

我有这两个代码:

private static int a = 5;
private static int b = a;

static void Main(string[] args)
{
    Console.WriteLine(b);
}

private static int b = a;
private static int a = 5;

static void Main(string[] args)
{
    Console.WriteLine(b);
}

请解释一下为什么在第一种情况下输出是 5,而在第二种情况下输出是 0

【问题讨论】:

  • 先声明再初始化。
  • @WiktorZychla 哦,是的,谢谢。我正在寻找类似的东西,但没有找到。我应该删除问题还是有人会关闭它?

标签: c#


【解决方案1】:

在第二种情况下,编译器将为类型生成以下静态构造函数:

static Program()
{
   // Note: this type is marked as 'beforefieldinit'.
   Program.b = Program.a;
   Program.a = 5;
}

所以,当a 分配给b 时,它等于0。然后将a设置为5

【讨论】:

    猜你喜欢
    • 2013-03-01
    • 2018-07-12
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多