C# 多维数组

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维数组。