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.8 矩形数组和交错数组的对比 - 图1

图 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

请按任意键继续……