天天看點

c#資料結構-多元數組聲明通路周遊差別

多元數組使用多個參數的索引器進行通路。

且每個參數的範圍不會随着其他參數改變。

可以很好的作為圖像像素這種方方正正的東西的容器。

聲明

多元數組的聲明,相較于普通數組,差別在于在中括号加逗号分隔。

聲明類型僅添加逗号,指派時的建構使用逗号隔開每個次元的長度。

通路

多元數組的通路通過索引器,索引間使用逗号分隔。

多元數組不支援索引類和範圍類。

int a = arr[1, 2];
arr[2, 0] = a;
           

周遊

多元數組通過GetLength方法擷取每個次元上的長度。以此進行for循環的條件判斷。

而foreach循環不受影響,依然能像普通數組一樣周遊。

for (int i = 0; i < arr.GetLength(0); i++)
{
	for (int j = 0; j < arr.GetLength(1); j++)
	{
		arr[i, j] = i * j;
	}
}
foreach (var item in arr)
{
	Console.WriteLine(item);
}
           

差別

多元數組直接管理元素,而數組的數組管理的是一個數組。

而這個數組還需要你自己親手指派。最大的差別就展現在給數組的數組指派上。

你可以給他指派奇怪的值。例如,長度不同的數組,同一個數組,null。

int[][] arr2 = new int[6][];
int[] arr3 = new int[3];
for (int i = 0; i < arr2.Length; i++)
{
	arr2[i] = arr3;
}

arr2[0][1] = 16;
Console.WriteLine(arr2[3][1]);
           

多元數組免去了這一步,可以保證建立的數組是方方正正的。