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属性即可