C# 多維陣列 交錯陣列的區別,即 [ , ] 與 [ ][ ]的區別
多維陣列的宣告
在宣告時,必須指定陣列的長度,格式為 type [lenght ,lenght ,lengh, ... ]
int [,] test1 = new int [3,3];
或宣告時即賦值,由系統推斷長度
int [,] test1 = { {1,2,3}, {1,2,3}, {1,2,3}, };
交錯陣列的宣告
宣告時,至少需要指定第一維的長度,格式為 type [ ] [ ] [ ] ...
int [][] test1 = new int[5][];
注意,下面的宣告方式是錯的int [][] test1 = new int[][];
或者宣告時即賦值,由系統推斷長度
int [][] test1 = { new int[] {1,2,3,4}, new int[] {1,2,3}, new int[] {1,2} };
多維陣列與交錯陣列 二者的相同、區別
兩者宣告時,都必須指定長度,多維陣列必須指定每一維的長度,而交錯陣列需要至少需要指定第一維的長度。
多維陣列宣告時,符號是這樣的 [ , , , , ],逗號在 方括號 [ ] 中,每一維長度用逗號分隔。而交錯陣列每一維獨立在 [ ]中
當你想指定陣列長度時,只能在等號右側指定,int [,] test1 = new int [3,3] 是正確的 ;
下面以程式碼形式說明
大小不一致的多維陣列會發生錯誤
int [,] test1 = { {1,2,3,4}, {1,2,3}, {1,2} }; //這樣是錯的,長度必須一致
int [,] test1 = new int [4,5] { {1,2,3,4,5}, {1,2,3}, {1,2,3} }//這樣也是錯誤的,長度必須一致,必須為每一個位置賦值
這一點C#與C語言有所區別,C語言可以不全賦值,沒有賦值的位置系統預設為0。
下面的方法是正確的
int [,] test1 = { {1,2,3}, {1,2,3}, {1,2,3} };
初始化交錯陣列
上面已經說了宣告一個交錯陣列的方法
int [][] test1 = { new int[] {1,2,3,4}, //new int[4] {1,2,3,4} new int[] {1,2,3}, //new int[3] {1,2,3} new int[] {1,2} };
注意,在裡面有 new int[],這正是交錯陣列的特性。交錯陣列是由陣列構成的陣列,交錯陣列要求為內部的每個陣列都建立例項。
即交錯陣列的每一維都是一個例項,每一個例項為一個數組。
陣列的長度是固定的
無論多維陣列還是交錯陣列,長度都是固定的,不能隨意改變。
獲取陣列的長度
使用 物件.Length 獲取陣列的長度,需要注意的是,多維陣列的長度是每一維相乘,即元素總個數。
int [,] test1 = { {1,2,3}, {1,2,3}, {1,2,3} }; Console.WriteLine(test1.Length); 輸出為 9
而交錯陣列的長度則是“內部組成的陣列的個數”,例如
int [][] test1 = { new int[] {1,2,3}, new int[] {1,2,3}, new int[] {1,2,3}, }; Console.WriteLine(test1.Length);輸出為 3
方法
多維陣列、交錯陣列的方法無差別,都具有Sort()、Clear()等方法,這裡不再贅述,關於陣列的高階用法,請查閱
int [][-] test1 = { new int[] {1,2,3}, new int[] {1,2,3}, new int[] {1,2,3}, };