简单问题 到底什么是它们之间的区别
int[] intarray = new int[2]{1,2};
并且。
int[] intarray2 = {4,5,6};
“new” 究竟是做什么的呢?需要用它吗?
我猜它只是分配内存……或者其他什么操作?抱歉,我对 C# 完全不了解,学习过程中有些问题需要解决。
简单问题 到底什么是它们之间的区别
int[] intarray = new int[2]{1,2};
int[] intarray2 = {4,5,6};
“new” 究竟是做什么的呢?需要用它吗?
我猜它只是分配内存……或者其他什么操作?抱歉,我对 C# 完全不了解,学习过程中有些问题需要解决。
int[] array = new int[2] { 1, 2 };
并且:
int[] array = { 1, 2 };
并且:
var array = new[] { 1, 2 };
在所有情况下,我们都在初始化包含两个整数的数组。个人而言,我更喜欢最后一种语法。
new
关键字分配,就像其他引用类型一样。int[] intarray = new int[2]{1,2};
int[] intarray2 = {4,5,6};
int[] intarray2 = {4,5,6};
与......完全相同:
int[] intarray2 = new int[] {4, 5, 6};
缩略写法只是编码的一种缩写形式,事实上编译器会为数组分配同样数量的内存空间。第一个示例中没有显式地写出“new”,就像将整数分配给双精度变量时可以写入强制转换符号也可以不写(因为这是安全的强制转换),效果相同。例如:
int i = 12;
double d = i;
与之相同:
int i = 12;
double d = (double)i;
这是一种语法糖。
它们之间没有区别;它们将编译为相同的IL。
但是,数组初始化器只能用于初始化数组字段或属性。
http://msdn.microsoft.com/en-us/library/s1ax56ch.aspx
根据这个,new关键字将会调用默认构造函数。int i=new int();
或者
int i=0;
是相同的。
{4,5,6}
作为参数传递给函数或从函数返回时,会生成编译时错误。在这些情况下,需要使用new
关键字和方括号。 - Dave F