多維數組的聲明 在聲明時,必須指定數組的長度,格式為 type [lenght ,lenght ,lengh, ... ] 或聲明時即賦值,由系統推斷長度 交錯數組的聲明 聲明時,至少需要指定第一維的長度,格式為 type [ ] [ ] [ ] ... 或者聲明時即賦值,由系統推斷長度 多維數組與 ...
多維數組的聲明
在聲明時,必須指定數組的長度,格式為 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 [6,4] test1 = new int [6,4] 是錯誤的;
下麵以代碼形式說明
大小不一致的多維數組會發生錯誤
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()等方法,這裡不再贅述,關於數組的高級用法,請查閱
https://www.jb51.net/Special/265.htm
下列為System.Array類的屬性
由於系統提供的方法比較多,有興趣請查閱
https://docs.microsoft.com/zh-cn/dotnet/api/system.array?view=netframework-4.7.2