C# 二维数组连接

标签 c# copy concatenation multidimensional-array

有没有比这更高效的连接二维数组的方法?

  static void Main(string[] args)
    {

        int[][] array1 = { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 }, new int[] { 7, 8, 9 } } ;             

        int[][] array2 = { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 }, new int[] { 7, 8, 9 } };

        int[][] array3 = Concat(array1, array2);

    }

    private static int[][] Concat(int[][] array1, int[][] array2)
    {
        int array1Length = array1.Length;
        int array2Length = array2.Length;

        int[][] result = new int[array1Length + array2Length][];
        int i = 0;
        for (; i < array1Length; i++)
            result[i] = array1[i];

        for (; i < array2Length + array1Length; i++)
            result[i] = array2[i - array1Length];

        return result;    



    }

编辑: 我想知道这是否是二维数组深度连接的好做法

        private static int[][] DeepConcat(int[][] array1, int[][] array2)
    {
        int array1Length = array1.Length;
        int array2Length = array2.Length;

        int[][] result = new int[array1Length + array2Length][];
        int i = 0;
        for (; i < array1Length; i++)
        {
            result[i] = new int[array1[i].Length];
            for (int j = 0; j < array1[i].Length; j++)
            {
                result[i][j] = array1[i][j];
            }
        }
        for (; i < array2Length + array1Length; i++)
        {
            result[i] = new int[array2[i - array1Length].Length];
            for (int j = 0; j < array2[i - array1Length].Length; j++)
            {
                result[i][j] = array2[i - array1Length][j];
            }

        }
        return result;

    }

最佳答案

您可以使用 int[] 的链表相反,您不需要重新分配任何新内存。

参见 LinkedList<T> ,或者如果它没有完全按照您想要的 concat 执行,您可以轻松制作自己的。

关于C# 二维数组连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3195444/

相关文章:

Excel VBA - 将多个用户表单复选框值写入单个单元格

video - 使用串联视频时如何指定比特率?

c# - 是否有一个概述来查看哪些 UriComponents 返回 Uri 的内容?

copy - gcloud 计算 scp 错误 : All sources must be local files

c# - 从C#中的文本文件执行代码行

c# - 将 3 维数组复制到 11x3 维数组 C#

go - io.Copy写入: broken pipe for big file

java - 是否可以将用户的输入[通过 getText()] 获取到多个 txtfields,然后将其连接起来?

c# - 根据指纹从商店中查找 X509 证书

c# - 如何在 Windows 窗体中创建没有选项卡标题的选项卡控件?