如何将数组添加到另一个2D数组?例如
//change this
array2d = { {1,2,3}, {4,5,6} };
//to this
array2d = { {1,2,3}, {4,5,6}, {7,8,9} };
//by adding
array1d = {7,8,9};
除了创建一个比旧数组更大的数组之外还有更好的方法,然后将旧数组复制到数组中吗?
答案 0 :(得分:2)
除非你有理由不这样做,否则我会推荐List<List<int>>
这样的事情。
它的代码可能如下所示:
List<List<int>> my2dList = new List<List<int>>()
{
new List<int>()
{
1,
2,
3
},
new List<int>()
{
4,
5,
6
},
};
my2dList.Add(new List<int>(){7,8,9});
或者,如果您确实要将每列限制为三个长度,请考虑使用具有不可变大小的内部结构(大小为3的数组等)
答案 1 :(得分:0)
似乎您可能想要使用不同的数据结构,数组列表会使这更容易。
答案 2 :(得分:0)
@VP发布的代码段的扩展版本。包括从List(List&gt;到使用Linq的Jagged数组:
)的反向转换 // 2d array to List
List<List<int>> ar2list = new List<List<int>>()
{
new List<int>() { 1, 2, 3 },
new List<int>() { 4, 5, 6 },
};
// adding item to List
ar2list.Add(new List<int>() { 7, 8, 9 });
// List to Jagged array conversion using Linq
int[][] _arrConcat = ar2list.Select(Enumerable.ToArray).ToArray();
最后,与OP请求的特定用例相关,int[][]
可以通过简单的int[,]
循环轻松转换为for
:
array2d = new int[_arrConcat.Length, 3];
for (int i = 0; i<_arrConcat.Length; i++)
{
for (int j = 0; j < 3; j++)
{
array2d[i, j] = _arrConcat[i][j];
}
}
其中array2d
是添加索引/内容的原始数组。
希望这会有所帮助。最好的问候,