在c#中处理多维数组,类似于Java
本文关键字:数组 类似于 Java 处理 | 更新日期: 2023-09-27 18:14:29
在Java中我们可以这样做:
bool[][] something = new bool[5][10];
// Then, we can do this, since indexes do not refer to null instances:
something [3][7] = true;
然而,同样的代码在c#中似乎无法编译。在c#中是否有类似的方法?
语法略有不同:
bool[,] something = new bool[5,10];
// Then, we can do this, since indexes do not refer to null instances:
something [3,7] = true;
或者如果你正在使用c# 3.0+,你可以稍微简化声明:
//Doesn't work for fields.
var something = new bool[5,10];
这是一个多维数组。
问题中的语法将为您提供c#中的锯齿数组(数组的数组)。它们与多维数组不同(多维数组是将元素连续存储在内存中的单个数组,具有多维索引)。
我没有在Java方面做过很多工作,但是一点研究表明Java多维数组类似于c#的锯齿数组,而不是c#的多维数组。
要声明和创建数组的数组,可以这样做:bool[][] something = new bool[5][];
创建一个五元素数组,其元素类型为bool[]
。您需要单独创建元素(或者可能从其他地方获取对它们的引用)。5个数组的长度不必相同:
for (int i = 0; i < something.Length; i++)
something[i] = new bool[GetLengthForElement(i)];
如果你希望它们都是10个元素长,你当然可以这样做:
for (int i = 0; i < something.Length; i++)
something[i] = new bool[10];
c#的语法稍有不同。谷歌很快就打开了这个MSDN页面