我想知道是否可以以及如何遍历一个您事先不知道维数的数组。
因此,假设我有一个数组ChessBoard,如下面的示例所示,我如何确定遍历所有维度的循环数? 我不想使用IEnumerate。我正在寻找一种基于维度的数量及其长度来构建多个循环的方法。
我已经能够弄清楚如何检索维数和每个维的长度,但是现在我陷入了困境,因为我不知道如何构建代码来动态读取此多维数组中的所有元素。
在此示例中,很显然,数组具有两个维度,但是我希望它也适用于不同的数组,例如具有三个维度的多维数据集,甚至更复杂的数组。 这是我的代码:
int[] Rows = new int[8] {1,2,3,4,5,6,7,8};
string[] Columns = new string[8] {"a","b","c","d","e","f","g","h"};
string[,] ChessBoard = new string[8,8];
for (int z = 0; z < Rows.Length; z++)
{
for(int y = 0; y < Columns.Length; y++)
{
ChessBoard[z,y] = Rows[z].ToString() + Columns[y];
}
}
int NumOfDimensions = ChessBoard.Rank;
List<int> DimensionLengths = new List<int>();
for (int s = 0; s < NumOfDimensions; s++)
{
DimensionLengths.Add(ChessBoard.GetLength(s));
}
因此,通过上面的代码,我创建了一个列表,其中包含此特定数组每个维度的长度。
如何使用此信息来迭代数组,使其同样适用于具有不同维数的数组?
我再次基于维度的数量来考虑多个循环,然后使用每个维度的长度来确定每个循环的条件。