C#支持最多32个维度的多维数组。可以通过在方括号中添加逗号来声明多维数组。例如,[,]声明二维数组,[,,]声明三维数组,[,,,]声明四维数组,等等。所以,在多维数组中,逗号的数目=维数的数目-1。
int[,] arr2d; // 二维数组 int[, ,] arr3d; // 三维数组 int[, , ,] arr4d ; // 四维数组 int[, , , ,] arr5d; // 五维数组
让我们了解二维数组。下面初始化二维数组。
int[,] arr2d = new int[3,2]{ {1, 2}, {3, 4}, {5, 6} }; //或 int[,] arr2d = { {1, 2}, {3, 4}, {5, 6} };
在上面的二维数组示例中,[3,2]定义了行和列的数目。第一列表示行数,第二列定义列数。下图演示了分为行和列的二维数组。
二维数组的以下访问值。
int[,] arr2d = new int[3,2]{ {1, 2}, {3, 4}, {5, 6} }; arr2d[0, 0]; //返回1 arr2d[0, 1]; //返回2 arr2d[1, 0]; //返回3 arr2d[1, 1]; //返回4 arr2d[2, 0]; //返回5 arr2d[2, 1]; //返回6 //arr2d[3, 0]; //抛出运行时错误,因为没有第四行
在上面的示例中,二维数组的值可以通过行和列的索引号[行索引,列索引]来访问。因此,[0, 0]返回第一行和第一列[1, 1]的值,并返回第二行和第二列的值。
现在,让我们了解三维数组。以下声明并初始化三维数组。
int[, ,] arr3d1 = new int[1, 2, 2]{ { { 1, 2}, { 3, 4} } }; int[, ,] arr3d2 = new int[2, 2, 2]{ { {1, 2}, {3, 4} }, { {5, 6}, {7, 8} } }; int[, ,] arr3d3 = new int[2, 2, 3]{ { { 1, 2, 3}, {4, 5, 6} }, { { 7, 8, 9}, {10, 11, 12} } }; arr3d2[0, 0, 0]; // 返回1 arr3d2[0, 0, 1]; // 返回2 arr3d2[0, 1, 0]; // 返回3 arr3d2[0, 1, 1]; // 返回4 arr3d2[1, 0, 0]; // 返回5 arr3d2[1, 0, 1]; // 返回6 arr3d2[1, 1, 0]; // 返回7 arr3d2[1, 1, 1]; // 返回8
正如你在上面的实例中看到的,arr3d1的[1,2,2]指定它将包含二维数组[2,2]中的一行。arr3d2指定维数[2,2,2],表示包含二维数组[2,2]的两行。因此,第一列表示内部二维数组的行数。
现在,看下面的四维数组。
int[,,,] arr4d1 = new int[1, 1, 2, 2]{ { { { 1, 2}, { 3, 4} } } }; arr4d1[0, 0, 0, 0]; // 返回1 arr4d1[0, 0, 0, 1]; // 返回2 arr4d1[0, 0, 1, 0]; // 返回3 arr4d1[0, 0, 1, 1]; // 返回4 int[,,,] arr4d2 = new int[1, 2, 2, 2]{ { { {1, 2}, {3, 4} }, { {5, 6}, {7, 8} } } }; arr4d2[0, 0, 0, 0]; // 返回1 arr4d2[0, 0, 0, 1]; // 返回2 arr4d2[0, 0, 1, 0]; // 返回3 arr4d2[0, 0, 1, 1]; // 返回4 arr4d2[0, 1, 0, 0]; // 返回5 arr4d2[0, 1, 0, 1]; // 返回6 arr4d2[0, 1, 1, 0]; // 返回7 arr4d2[0, 1, 1, 1]; // 返回8
在上面的示例中,四维数组arr4d1指定[1、1、2、2],这表示它包含三维数组的一行。
以相同的方式,您可以在C#中声明和初始化5维,6维数组以及最多32维数组。