如何将列表转换为 int[][]

本文关键字:int 转换 列表 | 更新日期: 2023-09-27 17:56:56

我有一个类片段,我在其中定义每个片段形状。

myShape.Add(new piece
        {
            Height = 3,
            Width = 2,
            Name = "3x2 L TopRight",
            Size = 4,
            Shape = new int[][] {
                        new int[] { 1, 0 },
                        new int[] { 1, 0 },
                        new int[] { 1, 1 }
                    }
        });

但是我手工创建这些形状,现在我实时阅读这些作品,所以我创建类似的东西。

List<int[]> virtualRow = new List<int[]>();
virtualRow.Add(new int[] { 1, 0 });
virtualRow.Add(new int[] { 1, 0 });
virtualRow.Add(new int[] { 1, 1 });

那么如何使用虚拟行创建形状呢?

我尝试类似的东西

Shape = new int[][] { virtualRow.ToArray() }

但是说

无法将类型"int[][]"

隐式转换为"int[]"

如何将列表转换为 int[][]

virtualRow.ToArray()已经是一个int值数组。 您不需要创建一个新的整数数组并将其添加到其中。

您所需要的只是:

Shape = virtualRow.ToArray(),

virtualRow 是整数数组的List,因此要获得整数数组数组,您只需编写:

Shape = virtualRow.ToArray();

。List.ToArray() 的返回类型根据需要为 T[]。

您的代码出错,因为它尝试向Shape添加int[][],而不是Shape创建int[][]

您要执行以下操作:

Shape  = virtualRow.ToArray();

因为 virtualRow 已经是一个数组列表。ToArray函数为您的virtualRow创建一个int[][]对象,您需要做的就是将其存储为形状。您尝试做的是创建一个矩阵,其中是ToArray函数的结果。这样,您只需存储函数的结果,该函数即可获得所需的内容。