1. 程式人生 > >C#中的多維陣列和交錯陣列

C#中的多維陣列和交錯陣列

C#中有多維陣列和交錯陣列,兩者有什麼區別呢!
直白些,多維陣列每一行都是固定的,交錯陣列的每一行可以有不同的大小。
以二維的舉例,二維陣列就是m×n的矩陣,m行n列;而交錯陣列(又叫鋸齒陣列)有m行,但是每一行不一定是n列。Got it?
在這個意義上,C++和Java中的多維陣列起始相當於C#中的交錯陣列,要使用多維陣列,只需要保證每個維度的長度是相等的就OK了!
因為m×n的矩陣這樣的多維陣列比較常用,感覺C#中對兩個進行了區分,提供了一些便利!
還有要注意C#中的陣列也是一種型別(C++中不是,比如C++中函式返回值不能是陣列,感覺C++中的陣列更像是一個指標)!

下面看例項:
二維陣列:

public static void Main()
{
    int row = 5;
    int column = 5;
    int[,] matrix = new int[row, column];
    //初始化
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < column; j++)
        {
            matrix[i, j] = (i + 1) * 10 + j + 1;
        }
    }
    //輸出
    Console.WriteLine("該二維陣列有:{0}行{1}列!"
, matrix.GetLength(1), matrix.GetLength(1)); for (int i = 0; i < row; i++) { for (int j = 0; j < column; j++) { Console.Write(matrix[i, j] + " "); } Console.Write('\n'); } }

結果:
多維陣列

說明:

多維陣列的宣告採用int[,]這樣的方式
獲取多維陣列的第i維的長度用陣列名.GetLength(i)方法
例如:獲取二維陣列的行:matrix.GetLength(0);獲取二維陣列的列:matrix.GetLength(1)
多維陣列的Length屬性是陣列總共的長度



二維交錯陣列:

public static void Main()
{
    int row = 5;
    //交錯陣列空間的申請
    int[][] matrix = new int[row][];
    for (int i = 0; i < row; i++)
    {
        matrix[i] = new int[i + 1];
    }
    //資料初始化
    for (int i = 0; i < matrix.Length; i++)
    {
        for (int j = 0; j < matrix[i].Length; j++)
        {
            matrix[i][j] = (i + 1) * 10 + j + 1;
        }
    }
    //資料輸出
    for (int i = 0; i < matrix.Length; i++)
    {
        for (int j = 0; j < matrix[i].Length; j++)
        {
            Console.Write(matrix[i][j] + " ");
        }
        Console.Write('\n');
    }
}

結果:
交錯陣列

說明:

交錯陣列的宣告使用int[][]的形式
交錯陣列獲取長度直接使用Length屬性即可