c# - 我可以将包含对象的列表转换为二维数组吗

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

我不知道这在 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/

相关文章:

c# - 不确定如何将 C# 加密函数移植到 PHP

c# - 将 JSON 反序列化为匿名对象

c# - 将列表转换为给定类型

java - 将测试文件中的现有字符串与带有参数的新输入者对象进行比较时,始终返回 false

javascript - 将一个javascript嵌套对象数据结构转换为嵌套数组

c# - 如何在 WebBrowser 控件中注入(inject) CSS?

c# - 私有(private)方法和属性的 JetBrains Rider C# 命名风格

c# - 为列表编写删除名称循环

C# 向列表中添加多个项目

javascript - 将 php 数组编码为 js 变量缺少一些数据?