18.8 矩形数组和交错数组的对比
通过图18-3,我们可以清楚地看到,矩形数组和交错数组在结构上完全不同。首先,矩形数组是一个数组,而交错数组是一个一维数组加上多个一维数组,实际上是多个数组,接下来我们通过代码示例进行说明。
首先声明一个2行3列的矩形数组array1,然后对它进行初始化,在这里我们简单地使用行和列的索引值的组合作为元素的值,如下:
String[,]array1=new string[2,3];
for(int i=0;i<array1.GetLength(0);i++)
{
for(int j=0;j<array1.GetLength(1);j++)
{
array1[i,j]=string.Format("{0}{1}",i,j);
}
}
初始化后,遍历数组并把元素的值输出到控制台,如下:
private static void PrintArray(string[,]array)
{
for(int i=0;i<array.GetLength(0);i++)
{
for(int j=0;j<array.GetLength(1);j++)
{
Console.WriteLine("array[{0},{1}]={2}",i,j,array[i,j]);
}
}
}
然后声明一个交错数组array2,它的顶级数组长度为2,然后每个子数组的长度为3,我们也对数组进行初始化,如下:
string[][]array2=new string[2][];
array2[0]=new string[3]{"a","b","c"};
array2[1]=new string[3]{"d","e","f"};
继续遍历交错数组每一个元素的值并输出到控制台:
private static void PrintArray(string[][]array)
{
for(int i=0;i<array.GetLength(0);i++)
{
for(int j=0;j<array[i].GetLength(0);j++)
{
Console.WriteLine("array[{0}][{1}]={2}",i,j,array[i][j]);
}
}
}
可见,由于矩形数组和交错数组结构不同,它们的初始化以及遍历的方法都不同。接下来,对比矩形数组和交错数组在内存中的结构,如图18-16所示。
图 18-16 矩形数组和交错数组在结构上的对比
最后,完整的示例代码如代码清单18-9所示。
代码清单18-9 矩形数组和交错数组对比示例代码
using System;
namespace ProgrammingCSharp4
{
class ArraySample
{
public static void Main()
{
String[,]array1=new string[2,3];
for(int i=0;i<array1.GetLength(0);i++)
{
for(int j=0;j<array1.GetLength(1);j++)
{
array1[i,j]=string.Format("{0}{1}",i,j);
}
}
PrintArray(array1);
string[][]array2=new string[2][];
array2[0]=new string[3]{"a","b","c"};
array2[1]=new string[3]{"d","e","f"};
PrintArray(array2);
}
private static void PrintArray(string[][]array)
{
for(int i=0;i<array.GetLength(0);i++)
{
for(int j=0;j<array[i].GetLength(0);j++)
{
Console.WriteLine("array[{0}][{1}]={2}",i,j,array[i][j]);
}
}
}
private static void PrintArray(string[,]array)
{
for(int i=0;i<array.GetLength(0);i++)
{
for(int j=0;j<array.GetLength(1);j++)
{
Console.WriteLine("array[{0},{1}]={2}",i,j,array[i,j]);
}
}
}
}
}
运行结果为:
array[0,0]=00
array[0,1]=01
array[0,2]=02
array[1,0]=10
array[1,1]=11
array[1,2]=12
array[0][0]=a
array[0][1]=b
array[0][2]=c
array[1][0]=d
array[1][1]=e
array[1][2]=f
请按任意键继续……