我可以将带有对象的列表转换为二维数组

时间:2017-04-08 11:06:09

标签: c# list object multidimensional-array type-conversion

我不知道c#中是否可以这样做,但如果是这样的话会很棒。我有一个对象列表,很容易转换成一个数组,代码如下:

{{1}}

它工作正常,但如何将带有对象的列表转换为二维数组,其中列表中索引0到20的元素将位于二维数组的第一行。列表中索引21到41的元素应位于二维数组的第二行。列表中索引42到62的元素应该位于二维数组等的第三行。换句话说,每行应该有20个元素,并且有21行和21列。在图像labyrint中输入,然后是角色' B'应该在索引[1,0]

达到

但我再也不知道它是否可能,但希望一些技术娴熟的人可以帮助我。

1 个答案:

答案 0 :(得分:0)

您可以循环遍历数组并将项目放入2d。

// 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#中的2D数组实际上并没有改变数据存储的方式,它们只是以稍微不同的方式访问单维数组的语法。只需计算你的x&amp;当您访问单维数组时,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();
}
相关问题