C#中的多維陣列和交錯陣列
阿新 • • 發佈:2019-01-30
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屬性即可