是 - 在第一个版本中,变量未明确分配.在第二个中,它是明确赋值的,默认值为(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
被约束为非可空值类型.
数组是一个完全独立的问题,应该单独询问.