是 - 在第一个版本中,变量未明确分配.在第二个中,它是明确赋值的,默认值为(0).所以:
int a;
Console.WriteLine(a); // Error!
int a = new int();
Console.WriteLine(a); // Prints 0
Run Code Online (Sandbox Code Playgroud)
但是,我认为我从未故意写过new int().你经常写:
int a = 0;
Run Code Online (Sandbox Code Playgroud)
作为一种更具可读性的方法.对于泛型方法,您可以使用或者default(T),new T()但是,如果T被约束为非可空值类型.
数组是一个完全独立的问题,应该单独询问.