C#unassigned static int结果为零

时间:2016-09-04 07:33:08

标签: c#

在试验静态变量时,我很惊讶地知道为什么静态“int”导致0(零)和非静态导致编译时错误。

考虑案例1

  static int i;
  static void Main()
  {
     Console.Write("Value of i = " + i);
     Console.ReadKey();
  }

输出

 Value of i = 0

案例2,删除静态

  static void Main()
  {
     int i;
     Console.Write("Value of i = " + i);
     Console.ReadKey();
  }

此输出将导致编译时错误

  Error 1   Use of unassigned local variable 'i'

这里的问题是两种情况如何不同,即第一个结果为0,另一个结果为编译器错误。

1 个答案:

答案 0 :(得分:2)

根据C#语言的定义,类型具有"默认值",如果您不指定其他内容,则会分配给它们。数字的默认值为0,boolean - false,引用类型 - null和结构 - 每个成员都有它的类型。