0Pricing
C# Academy · 课时

多维数组

网格数组和交错数组。

多维数组 是 CoddyKit 上的免费 C# Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 4 节课。

超越单个 row

到目前为止,数组都是只有一行值的结构。多维数组会将值存储在网格中,就像包含行和列的电子表格一样。

它们非常适合表示游戏棋盘、表格和矩阵。

声明二维数组

二维数组在方括号内使用逗号:[,]。您需要提供两个大小,分别表示行数和列数。

这个网格有 2 行和 3 列,因此可以存储 6 个值。

int[,] grid = new int[2, 3];
Console.WriteLine(grid[0, 0]); // 0

访问单元格

要读取或写入一个单元格,请同时提供 row 索引和列索引,并用逗号分隔。

两个索引都从 0 开始,就像一维数组中的索引一样。

int[,] grid = new int[2, 3];
grid[0, 1] = 7;
grid[1, 2] = 9;
Console.WriteLine(grid[1, 2]); // 9

初始化网格

您可以在创建二维数组时使用嵌套大括号填充它。每个内部分组代表一行。

所有行都必须包含相同数量的列。

int[,] grid = { { 1, 2, 3 }, { 4, 5, 6 } };
Console.WriteLine(grid[1, 0]); // 4

GetLength 方法

对于二维数组,Length 表示单元格总数。要获取某个维度的大小,请使用 GetLength。

GetLength(0) 表示行数,GetLength(1) 表示列数。

int[,] grid = { { 1, 2, 3 }, { 4, 5, 6 } };
Console.WriteLine(grid.Length);        // 6
Console.WriteLine(grid.GetLength(0));  // 2
Console.WriteLine(grid.GetLength(1));  // 3

遍历网格

要访问每个单元格,请使用一个循环遍历行,并在其中嵌套另一个循环遍历列。外层循环选择一个 row,内层循环遍历该 row 中的列。

使用 GetLength,确保循环与实际大小一致。

int[,] grid = { { 1, 2 }, { 3, 4 } };
for (int r = 0; r < grid.GetLength(0); r++)
{
    for (int c = 0; c < grid.GetLength(1); c++)
    {
        Console.WriteLine(grid[r, c]);
    }
}

完整的网格程序

这个完整程序会创建一个小网格,然后打印每个值及其所在的行和列。

运行它,查看列出的全部四个单元格。

int[,] grid = { { 10, 20 }, { 30, 40 } };
for (int r = 0; r < grid.GetLength(0); r++)
{
    for (int c = 0; c < grid.GetLength(1); c++)
    {
        Console.WriteLine("[" + r + "," + c + "] = " + grid[r, c]);
    }
}

三维数组

添加更多逗号即可增加维度。三维数组使用 [,,] 和三个大小。

您可以把它想象成一叠网格。三维数组不太常见,但遵循相同的规则。

int[,,] cube = new int[2, 2, 2];
cube[1, 1, 1] = 5;
Console.WriteLine(cube[1, 1, 1]); // 5

交错数组

交错数组是由数组组成的数组,写作 [][]。与矩形网格不同,每个 row 都可以有不同的长度。

您可以使用两组相互独立的方括号访问它。

int[][] jagged = new int[2][];
jagged[0] = new int[] { 1, 2 };
jagged[1] = new int[] { 3, 4, 5 };
Console.WriteLine(jagged[1][2]); // 5

矩形数组与交错数组

矩形 [,] 数组始终具有等长的行,并且能够紧凑地存储数据。交错 [][] 数组则允许每行具有不同的长度。

对于真正的表格,请选择矩形数组;当各行的大小自然不同时,请选择交错数组。

int[][] rows = { new[] { 1 }, new[] { 2, 3, 4 } };
Console.WriteLine(rows[0].Length); // 1
Console.WriteLine(rows[1].Length); // 3

网格求和

您可以在嵌套循环中将每个单元格相加,从而计算网格中所有值的总和。

这种模式可以扩展到任意数量的行和列。

int[,] grid = { { 1, 2 }, { 3, 4 } };
int total = 0;
foreach (int v in grid)
{
    total += v;
}
Console.WriteLine(total); // 10

快速检查

测试您对多维数组的理解。

回顾

您学会了使用 [,] 创建网格,使用行索引和列索引访问单元格,并使用 GetLength 测量网格大小。

嵌套循环可以访问每个单元格,添加更多逗号可以增加维度,而交错 [][] 数组允许各行具有不同的长度。现在,您已经可以在 C# 中存储和处理表格数据了。

常见问题解答

「多维数组」课时是免费的吗?

是的 — 「多维数组」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 4 节课。

「多维数组」这节课中我会学到什么?

网格数组和交错数组。 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C# Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「多维数组」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C# Academy 课中编写并运行代码吗?

能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 声明数组
  2. 索引与长度
  3. 遍历数组
  4. 多维数组
← 返回 C# Academy