18.5.2 显式初始化矩形数组及要点
显式初始化矩形数组和初始化一维数组有一点是相同的,那就是都需要将初始值包括在一对花括号中。不同的是,矩形数组的每个初始值都是一组值,对应了矩形数组的多个维度的长度,多个维度的初始值之间以及矩形数组的每个初始值之间都要使用逗号隔开。接下来,我们看一段代码:
int[,]a=new int[3,3]{{1,2,3},{4,5,6},{7,8,9}};
为了便于理解,下面使用图18-10来演示数组的初始化过程,可见初始化是采用“横向扫描”赋值的,从(0,0)开始,到(2,2)结束。
图 18-10 横向扫描赋值
接下来,我们将二维数组a的数据元素值打印出来,如代码清单18-5所示。
代码清单18-5 打印二维数组a的数据元素值到控制台
for(int i=0;i<a.GetLength(0);i++)
{
for(int j=0;j<a.GetLength(1);j++)
{
Console.WriteLine("a[{0},{1}]={2}",i,j,a[i,j]);
}
}
上述代码输出结果如下:
a[0,0]=1
a[0,1]=2
a[0,2]=3
a[1,0]=4
a[1,1]=5
a[1,2]=6
a[2,0]=7
a[2,1]=8
a[2,2]=9
图18-11展示了赋值后二维数组a在内存中的布局图。
图 18-11 赋值后二维数组a在内存中的布局图
二维数组相对简单,对于具有更多维度的数组,以三维数组sample3DArray为例,如代码清单18-6所示。
代码清单18-6 三维数组示例
int[,]sample3DArray=new int[2,3,4]{
{{1,2,3,4},{5,6,7,8},{9,10,11,12}},
{{13,14,15,16},{17,18,19,20},{21,22,23,24}}
};
其初始化方法的要点为:实例化时各维度的数字从左向右分别是竖向分组、横向分组、元素数。那么,就当前数组sample3DArray来说,其分组情况如下:
❑竖向分组。这里是2,表示竖向分组有2个。
❑横向分组。这里是3,表示横向分组有3个一维数组。
❑元素数。这里是4,表明横向分组中的每个一维数组中都有4个元素。
图18-12提供了一种初始化三维数组的方法,以方便大家理解。
图 18-12 显式初始化三维数组的方法