C# 这两个数组声明之间有什么区别?
这两种声明似乎是相同的:C# 这两个数组声明之间有什么区别?,c#,syntax,C#,Syntax,这两种声明似乎是相同的: int[] array1 = {11, 22, 33}; 及 但是在第二个示例中,这一部分的需求是什么 这有区别吗?没有区别。它们都是相同的。在这种情况下没有区别-但第一种语法仅在声明变量时可用。根据C#4规范第12.6节: 数组初始值设定项可以在字段声明、局部变量声明和数组创建表达式中指定 (数组初始值设定项是大括号中的位,数组创建表达式是指定newint[]或其他形式的形式。) 如果不声明局部变量或字段(例如,如果将参数传递给方法),则必须使用第二种形式,或者从C
int[] array1 = {11, 22, 33};
及
但是在第二个示例中,这一部分的需求是什么
这有区别吗?没有区别。它们都是相同的。在这种情况下没有区别-但第一种语法仅在声明变量时可用。根据C#4规范第12.6节: 数组初始值设定项可以在字段声明、局部变量声明和数组创建表达式中指定 (数组初始值设定项是大括号中的位,数组创建表达式是指定
newint[]
或其他形式的形式。)
如果不声明局部变量或字段(例如,如果将参数传递给方法),则必须使用第二种形式,或者从C#3.0开始,可以使用隐式类型数组:
Foo(new[] { 1, 2, 3} );
两者都是一样的。请参见此处的MSDN。由于您在声明的同一行中提供了初始值设定项,因此可以省略新运算符 //这没关系 int[]i32Array={1,2,3,4,5} //这不是 int[]i32数组; i32Array={1,2,3,4,5} 如果你的定义和开始发生在不同的行中,你将不得不这样做 i32Array=newint[]{1,2,3,4,5}
因此,从技术上讲,可以在不初始化的情况下声明数组变量,但是当您将数组分配给该变量时,必须使用new运算符,因为两者完全相同 请看下面的代码:
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
};
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
};