我不知道这在 C# 中是否可行,但如果可以的话就太好了。我有一个对象列表,使用以下代码很容易将其转换为数组:
object [] myArray = wrd.ToArray();
它工作正常,但我如何将包含对象的列表转换为二维数组,其中列表中从索引 0 到 20 的元素将位于二维数组的第一行。列表中从索引 21 到 41 的元素应位于二维数组的第二行。列表中从索引 42 到 62 的元素应该在二维数组的第三行等。换句话说,每行应该有 20 个元素,并且有 21 行和 21 列。图片中的 Forinstens labyrint那么应该在索引 [1,0] 处到达字符 'B'
但是我还是不知道这是否可能,但希望有一些非常熟练的人可以帮助我。
最佳答案
您可以遍历数组并将项目放入二维数组中。
// Pseudo code...
x = 0
y = 0
loop while i < originalArray.Length
2dArray[x,y] = originalArray[i]
i++
y++
if y >= 2dArrayRowLength
x++
y=0
end loop
但说真的,何必呢。 C# 中的二维数组实际上并没有改变数据的存储方式,它们只是用于以稍微不同的方式访问一维数组的语法糖。只需在访问一维数组时即时计算 x 和 y 偏移量即可。
有点像这样。
object[] data = new object[100];
int xLength = 21;
int yLength = 21;
for (int x = 0; x < xLength; x++)
{
for (int y = 0; y < yLength; y++)
{
var theValue = data[(yLength * x) + y];
Console.Write(theValue);
}
Console.WriteLine();
}
关于c# - 我可以将包含对象的列表转换为二维数组吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43293272/