【最重要的两个条件】
在声明数组时有两个非常重要的条件,只有满足这两个条件,声明出来的数组才能保证在程序运行的时候不出错,这两个条件是:
- 声明的数组要有初始值
- 声明的数组要有存储的位置(即有分配内存给数组存储数据)
【数组的声明方式】
【方式一】
int[] array;//声明数组
array=new int[3];//数组实例化
声明的数组要有初始值:虽然我们没有赋初始值,但有默认的初始值0
声明的数组要有存储的位置:new关键字的作用是让CLR为数组分配内存,所以我们在声明数组时基本上要有new关键字。数字3也很重要,其告诉CLR我们需要多大的内存空间。如果没有数字3,那么CLR就不知道要分配多少空间,程序就会报错。
(你可以试一试把这两行代码赋值到VS中,去掉数字3,看是不是会报错)
【方式二】
int[] array;
array = new int[3] {5,6,7};
我们也可以在实例化的时候直接赋值。这时我们也可以将数字3去掉,因为这时我们已经赋了3个值,CLR已经知道需要多大的空间。
(注解:实例化的时候是赋值了的,赋的值时默认的初始值;这里所说的赋值是指我们自己指定值而不用默认的初始值。)
【方式三】
int[] array=new int[3] {1,2,3};
//int[] array=new int[3];
我们可以在声明数组的同时实例化、赋值
【方式四】
int[] array= {1,2,3};
进一步,我们可以将new关键字省略,代码变得更简单。
推荐用方式三来声明数组
【二维数组、多维数组的声明】
int[,] X = new int[3,3];//声明3x3的二维数组并实例化
int[,] Y = new int[2,3] {{1, 2,3}, {4, 5,6}};//声明2x3的二维数组并实例化、赋值
int[,,] Z = new int[2, 3, 4];//声明2x3x4的三维数组并实例化
int[,,] M = new int[2, 2, 2]//声明2x2x2的三维数组并实例化、赋值
{
{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}},
};
【拓展】
int[] X;
int[] Y;
Y = X;
上面的代码会报错,这里只声明了数组X、Y,既没有实例化、也没有赋值,所以在代码“Y=X”中进行赋值操作时会报错,错误为“使用了未赋值的X”。
若X实例化了,或者赋值了,就不会报错(下面的代码是正确的)
int[] X = new int[3];
//int[] X = new int[3] {5,6,7};
int[] Y;
Y = X;
【参考】
[1]《C#本质论5.0》