// 下面是我从书上复制来练习的代码。 // 我想打印出多维数组的内容。
int[][] matrix = new int[4][];
matrix[0] = new int[2];
matrix[1] = new int[6];
matrix[2] = new int[4];
matrix[3] = new int[5];
for (int row = 0; row < matrix.Length; row++)
{
for (int column = 0; column < matrix[row].Length; column++)
Console.Write(matrix[row][column] + " "); // Each item in the row separated by spaces
Console.WriteLine(); // Rows separated by lines
}
// 但结果是这样的:
//我以为应该打印:
我错过了什么?
首先,它不是一个多维数组,而是一个锯齿状数组(多维数组将是
int[,] matrix = new int[4,2];
,尽管它每行具有相同数量的元素)。
我错过了什么?
对于每个“行”,您将打印“行”中数组的元素,例如,
new int[2]
将创建用默认值初始化的2个整数的数组(对于0
来说是int
),因此打印它的元素将导致 0 0
。这同样适用于其余的数组。
我以为应该打印:
TBH 不太清楚你为什么这么想。但以下应该给出与预期类似的结果(即当前行的索引和该行的数组长度):
for (int row = 0; row < matrix.Length; row++)
{
Console.Write(row + " ");
Console.Write(matrix[row].Length);
Console.WriteLine(); // Rows separated by lines
}
或者带有字符串插值的较短版本:
for (int row = 0; row < matrix.Length; row++)
{
Console.WriteLine($"{row} {matrix[row].Length}");
}