看起来这两个声明是相同的:
int[] array1 = {11, 22, 33};
并且
int[] array2 = new int[] {11, 22, 33};
但第二个示例中的 new int[]
部分有什么必要性?
它会有所不同吗?
new int[]
或类似形式的内容。)当您不是声明局部变量或字段时(例如,如果您将参数传递给方法),您必须使用第二种形式,或者从C# 3.0开始,您可以使用隐式类型化数组。Foo(new[] { 1, 2, 3} );
没有区别。它们都是一样的。
由于您在声明时提供了初始化程序在同一行中,您可以省略new运算符。
// 这样是正确的
int[] i32Array = { 1,2,3,4,5 };
// 这样是不正确的
int[] i32Array; i32Array = { 1,2,3,4,5 };
如果您的定义和初始化发生在不同的行上,您将需要这样做
i32Array = new int[] { 1,2,3,4,5 };
因此,从技术上讲,可以在不进行初始化的情况下声明一个数组变量,但在将数组分配给该变量时必须使用new运算符。
int[] array1; // declare array1 as an int array of any size
array1 = new int[10]; // array1 is a 10-element array
array1 = new int[20]; // now it's a 20-element array
int[] array2 = new int[5] {1, 2, 3, 4, 5}; // declare array 2 as an int array of size 5
两者是相同的。在MSDN上看这里关于初始化数组。
两者完全相同
看这段代码:
int[] arr1={1,2,3,4};
int[] arr2= new int[]{1,2,3,4};
使用反射器将两者转换为以下内容:
int[] expr_07 = new int[]
{
1,
2,
3,
4
};
int[] expr_19 = new int[]
{
1,
2,
3,
4
};