1. 程式人生 > >C# 多維陣列 交錯陣列的區別,即 [ , ] 與 [ ][ ]的區別

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 [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()等方法,這裡不再贅述,關於陣列的高階用法,請查閱

        int [][-] test1 = {            new int[] {1,2,3},            new int[] {1,2,3},            new int[] {1,2,3},        };