我有一个类别片段,我定义每个片断形状。
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 });
那么如何使用virtualRow创建Shape?
我尝试过类似的东西
Shape = new int[][] { virtualRow.ToArray() }
但是说
无法将类型'int [] []'隐式转换为'int []'
virtualRow.ToArray()
已经是一系列int
值的数组。您不需要创建一个新的int数组数组并将其添加到它。
所有你需要的是:
Shape = virtualRow.ToArray(),
virtualRow是整数数组的List
,因此要获得整数数组的数组,只需编写:
Shape = virtualRow.ToArray();
... List.ToArray()的返回类型是T []。
你的代码是错误的,因为它试图将int[][]
添加到Shape
而不是创建Shape
作为int[][]
。
您想要执行以下操作:
Shape = virtualRow.ToArray();
由于virtualRow已经是一个数组列表。 ToArray
函数为你的int[][]
创建一个virtualRow
对象,你需要做的就是将它存储到形状中。你要做的是创建一个矩阵,其中是ToArray
函数的结果。这样你就可以存储函数的结果,它可以为你提供你想要的东西。