C#支持最多32個維度的多維數(shù)組??梢酝ㄟ^在方括號中添加逗號來聲明多維數(shù)組。例如,[,]聲明二維數(shù)組,[,,]聲明三維數(shù)組,[,,,]聲明四維數(shù)組,等等。所以,在多維數(shù)組中,逗號的數(shù)目=維數(shù)的數(shù)目-1。
int[,] arr2d; // 二維數(shù)組 int[, ,] arr3d; // 三維數(shù)組 int[, , ,] arr4d ; // 四維數(shù)組 int[, , , ,] arr5d; // 五維數(shù)組
讓我們了解二維數(shù)組。下面初始化二維數(shù)組。
int[,] arr2d = new int[3,2]{ {1, 2}, {3, 4}, {5, 6} }; //或 int[,] arr2d = { {1, 2}, {3, 4}, {5, 6} };
在上面的二維數(shù)組示例中,[3,2]定義了行和列的數(shù)目。第一列表示行數(shù),第二列定義列數(shù)。下圖演示了分為行和列的二維數(shù)組。
二維數(shù)組的以下訪問值。
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]; //拋出運行時錯誤,因為沒有第四行
在上面的示例中,二維數(shù)組的值可以通過行和列的索引號[行索引,列索引]來訪問。因此,[0, 0]返回第一行和第一列[1, 1]的值,并返回第二行和第二列的值。
現(xiàn)在,讓我們了解三維數(shù)組。以下聲明并初始化三維數(shù)組。
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]指定它將包含二維數(shù)組[2,2]中的一行。arr3d2指定維數(shù)[2,2,2],表示包含二維數(shù)組[2,2]的兩行。因此,第一列表示內(nèi)部二維數(shù)組的行數(shù)。
現(xiàn)在,看下面的四維數(shù)組。
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
在上面的示例中,四維數(shù)組arr4d1指定[1、1、2、2],這表示它包含三維數(shù)組的一行。
以相同的方式,您可以在C#中聲明和初始化5維,6維數(shù)組以及最多32維數(shù)組。