简单的简短问题
之间的区别究竟是什么?int[] intarray = new int[2]{1,2};
和
int[] intarray2 = {4,5,6};
像“新”那样做到底是什么? 你真的需要吗?
我猜它只是分配内存......或者什么?对不起,我对C#完全陌生,并且在学习它时会有疑问。
答案 0 :(得分:11)
第二个是array initializer syntax。这只是语法糖。两者都用它们各自的值初始化新的数组实例,第一个是更明确的(你重复它是右边的两个元素的整数数组,这从后面的内容非常明显,因此编译器能够推断出这些信息)。
以下是等同的:
int[] array = new int[2] { 1, 2 };
和
int[] array = { 1, 2 };
和
var array = new[] { 1, 2 };
在所有情况下,我们都在初始化一个包含两个整数的数组。我个人更喜欢最后一种语法。
答案 1 :(得分:2)
数组是reference types,使用C#new
关键字分配,其他引用类型也是如此。
您的一个数组语法只是C#编译器也能识别的一种较短的语法 - (它上面还有其他变体)您的示例都为数组实例分配(新)和初始化{elements} :
第一个版本明确说明了数组的大小。
int[] intarray = new int[2]{1,2};
第二个版本允许C#编译器通过初始化列表中的元素数来推断数组的大小。
int[] intarray2 = {4,5,6};
通常,C#编译器会识别用于声明和初始化C#本机数组的专用语法,以掩盖正在使用underlying System.Array
class的事实。
答案 2 :(得分:1)
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;
答案 3 :(得分:0)
这是一种语法糖。
他们之间没有区别;他们会编译成相同的IL 但是,数组初始值只能用于初始化数组字段或属性。
答案 4 :(得分:0)
http://msdn.microsoft.com/en-us/library/s1ax56ch.aspx
度Acc。对此,new将只调用默认构造函数。
int i=new int();
OR
int i=0;
是一样的。