在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#中是否有类似的方法?

在c#中处理多维数组,类似于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# 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页面