18.5 初始化数组

数组被实例化后,如果没有明确地对数组进行初始化,那么系统会自动将数组的各元素数据值初始化为当前数组类型的默认值。例如,对于int类型的一维数组array1,所有数组元素都将默认初始化为零,如代码清单18-2所示。

代码清单18-2 数组元素的默认值


int[]array1=new int[5];

for(int i=0;i<array1.Length;i++)

{

System.Console.WriteLine(array1[i]);//打印数组中每个元素的值

}


上述代码输出为:


0

0

0

0

0


array1数组在内存中的布局图如图18-7所示。

18.5 初始化数组 - 图1

图 18-7 数组元素的默认值

18.5.1 显式初始化一维数组

如果我们要主动初始化数组的数据,有两种选择:

❑可以在声明数组时将其初始化。

❑也可以将声明和初始化过程分开进行。

初始化数组的过程简单而直接,对于初始化一维数组来说,只需要将初始值包括在一对花括号中,在这些值之间使用逗号分隔即可。先来看段代码,演示如何在声明的同时进行初始化,如代码清单18-3所示。

代码清单18-3 声明时初始化


//int型数组

int[]array1=new int[5]{1,2,3,4,5};

//string型数组

string[]array2=new string[3]{"abc","def","ghi"};

//bool型数组

bool[]array3=new bool[3]{true,false,true};


还有一种常用的方式,就是声明和初始化过程分开,这种方式多用于先声明变量,然后在需要的位置再初始化,如代码清单18-4所示。

代码清单18-4 声明和初始化分开


int[]array1;//声明和初始化分开

array1=new int[5]{1,2,3,4,5};//此时需使用new运算符初始化


需要说明的是,如果在声明的同时进行初始化,那么数组的维度长度可以省略,先来看一个示例,如图18-8所示。

因为在声明的同时对数组进行了初始化,因此编译器可以根据初始值的个数来推断数组的维度长度,故而可以省略掉实例化语句中的维度长度,如下所示。

18.5 初始化数组 - 图2

图 18-8 一维数组初始化语句中的规律

18.5 初始化数组 - 图3

它等价于:


int[]array1=new int[5]{1,2,3,4,5};


图18-9展示了数组array1在内存中的布局。

18.5 初始化数组 - 图4

图 18-9 一维数组的初始化