多维数组
网格数组和交错数组。
多维数组 是 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]); // 4GetLength 方法
对于二维数组,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 反馈 — 无需本地设置。