为什么我必须写int
之后new
,当我声明数组num
没有初始化?例如
int[] num = new int[5];
Run Code Online (Sandbox Code Playgroud)
对于另一个数组,num1,
我只是宣布它,然后再赋予它的值,我没有键入int
后new
,像我一样的阵列num
.
int[] num1 = new [] {1, 2, 3, 4};
Run Code Online (Sandbox Code Playgroud)
为什么这个快捷方式对我的第一个例子不起作用?
如果提供数组的值,则可以推断出数组的类型(在某些情况下,您的示例已满足).由于值都是整数,因此编译器能够推断出您需要一个整数数组.如果您没有提供任何值(或者如果值不能全部隐式转换为其中一个值的类型),则无法推断出数组的类型应该是什么,因此您需要指定明确地说.
使用值声明数组的"完整"语法是new int[] {1, 2, 3, 4};
.
你的new [] {1, 2, 3, 4};
行是一种简写语法.它是一个"隐式类型"数组.因为值都是int
,所以数组会自动声明为int[]
.
您无法编写的原因int[] x = new [5];
很简单,C#设计人员尚未实现此功能.