3 本我 1天前 42次点击
上一个帖子讨论的多维数组可称为矩形数组,这是因为每一行的元素个数都相同。使用上一个示例,任何一个x坐标都可以对应0至3的y坐标。
也可以使用锯齿数组(jagged array),其中每行的元素个数可能不同。为此,需要有这样一个数组,其中的每个元素都是另一个数组。也可以有数组的数组的数组,甚至更复杂的数组。但是,注意这些数组都必须有相同的基本类型。
声明数组的数组时,其语法要求在数组的声明中指定多个方括号对,例如:
string[][] 我的锯齿数组;
初始化包含其他数组的数组(为清晰起见,称其为子数组),然后依次初始化子数组。
我的锯齿数组=new string[2][];
我的锯齿数组[0]=new string[1];
我的锯齿数组[1]=new string[2];
我的锯齿数组[0][0]="小红";
我的锯齿数组[1][0]="小明";
我的锯齿数组[1][1]="小绿";
也可以使用上述字面值赋值的一种改进形式:
我的锯齿数组=new string[2][]{new string[]{"小红"},new string[]{"小明","小绿"}};
也可以进行简化,把数组的初始化和声明放在同一行上,如下所示:
我的锯齿数组={new string[]{"小红"},new string[]{"小明","小绿"}};
可以对锯齿数组使用foreach循环,但通常需要嵌套的foreach循环才能得到实际数据。
foreach(string[] 列出数组 in 我的锯齿数组)
{
foreach(string 列出 in 列出数组)
{
WriteLine(列出);
}
}
示例
static void Main(string[] args)
{
//声明锯齿数组我的朋友
string[][] 我的朋友 = { new string[] { "小红", "小明", "小绿" } ,new string[] { "阿强"} ,new string[] { "甲","乙","丙","丁"} };
//通过foreach循环把锯齿数组的元素写到屏幕上
foreach (string[] 列举数组 in 我的朋友)
{
foreach (string 列出 in 列举数组)
{
WriteLine(列出);
}
}
//按下任意键结束
ReadKey();
}