鋸齒數(shù)組是數(shù)組的數(shù)組。鋸齒數(shù)組存儲數(shù)組而不是字面值。比如二維數(shù)組,是多個相同元素的一維數(shù)組,但是鋸齒數(shù)組,下面每個數(shù)組的元素的個數(shù)不一樣。
鋸齒數(shù)組用兩個方括號[] []初始化。第一個括號指定了數(shù)組的大小,第二個括號指定了將要存儲的數(shù)組的大小。
以下示例聲明了鋸齒數(shù)組。
int[][] jArray1 = new int[2][]; // 可以包含兩個一維數(shù)組 int[][,] jArray2 = new int[3][,]; // 可以包含三個二維數(shù)組
在上面的示例中,jArray1最多可以存儲兩個一維數(shù)組。jArray2最多可以存儲三個二維數(shù)組,數(shù)組[,]指定二維數(shù)組。
int[][] jArray = new int[2][];
jArray[0] = new int[3]{1, 2, 3};
jArray[1] = new int[4]{4, 5, 6, 7 };您還可以在聲明時初始化鋸齒數(shù)組,如下所示。
int[][] jArray = new int[2][]{
new int[3]{1, 2, 3},
new int[4]{4, 5, 6, 7}
};
jArray[0][0]; //返回1
jArray[0][1]; //返回2
jArray[0][2]; //返回3
jArray[1][0]; //返回4
jArray[1][1]; //返回5
jArray[1][2]; //返回6
jArray[1][3]; //返回7您可以使用兩個for循環(huán)訪問一個鋸齒的數(shù)組,如下所示。
int[][] jArray = new int[2][]{
new int[3]{1, 2, 3},
new int[4]{4, 5, 6, 7}
};
for(int i=0; i<jArray.Length; i++)
{
for(int j=0; j < (jArray[i]).Length; j++)
Console.WriteLine(jArray[i][j]);
}下面的鋸齒數(shù)組存儲二維數(shù)組,其中第二個括號[,]表示二維數(shù)組。
int[][,] jArray = new int[2][,];
jArray[0] = new int[3, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 } };
jArray[1] = new int[2, 2] { { 7, 8 }, { 9, 10 } };
jArray[0][1, 1]; //返回4
jArray[1][1, 0]; //返回9
jArray[1][1, 1]; //返回10如果你再加一個括號,那么它就是數(shù)組的數(shù)組。
int[][][] intJaggedArray = new int[2][][]
{
new int[2][]
{
new int[3] { 1, 2, 3},
new int[2] { 4, 5}
},
new int[1][]
{
new int[3] { 7, 8, 9}
}
};
Console.WriteLine(intJaggedArray[0][0][0]); // 1
Console.WriteLine(intJaggedArray[0][1][1]); // 5
Console.WriteLine(intJaggedArray[1][0][2]); // 9在上面的交錯數(shù)組示例中,三個方括號[][][]表示數(shù)組的數(shù)組的數(shù)組。因此,intJaggedArray將包含兩個元素,這意味著兩個數(shù)組。現(xiàn)在,每個數(shù)組還包含一個數(shù)組(一維)。intJaggedArray[0][0][0]指向第一個內(nèi)部數(shù)組的第一個元素。intJaggedArray[1][0][2]指向第二個內(nèi)部數(shù)組的第三個元素。下圖說明了這一點(diǎn)。
