C# 如何在C中将数据从一维数组添加到二维数组#

C# 如何在C中将数据从一维数组添加到二维数组#,c#,arrays,linq,list,jagged-arrays,C#,Arrays,Linq,List,Jagged Arrays,如何将阵列添加到另一个二维阵列?比如说 //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}; 除了创建一个比旧数组大的新数组,然后将旧数组复制到该数组之外,还有什么更好的方法吗?看起来您可能需要使用不同的数据结构,一个数组列表会使这更容易 除非你有理由不这样做,否则我会推荐一个类似的列表 它的代

如何将阵列添加到另一个二维阵列?比如说

//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};

除了创建一个比旧数组大的新数组,然后将旧数组复制到该数组之外,还有什么更好的方法吗?

看起来您可能需要使用不同的数据结构,一个数组列表会使这更容易

除非你有理由不这样做,否则我会推荐一个类似的
列表

它的代码可能如下所示:

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});
List my2dList=新列表()
{
新名单()
{
1.
2.
3.
},
新名单()
{
4.
5.
6.
},
};
添加(新列表(){7,8,9});

另一方面,如果您真的想将每个列限制为三的长度,可以考虑使用具有不可变大小的内部结构(大小3等数组)

扩展版本的由@ VP发布的代码段。包括使用Linq从列表(列表>到锯齿阵列的反向转换:

    // 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();
其中
array2d
是添加了索引/内容的原始数组


希望这会有所帮助。致以最诚挚的问候,

您无法调整数组大小,因此答案是否定的。您所说的是无法调整数组大小和数组大小。是的,您可以。您可能希望尝试使用常规集合,如列表,而不是数组。从技术上讲,
数组。resize
分配一个新数组。它不会调整数组大小。它将替换具有不同大小的新数组的数组。
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];
    }
}