多个不定长的数组合计总长度已知,如何将这多个不定长的数组合并成一个数组,数组类型相同,为一维数组。要效率高,操作方便点

解决方案 »

  1.   


            static void Main(string[] args)
            {
                int[] arr1 = { 1, 2, 3, 4 };
                int[] arr2 = { 2, 3, 45, 6, 7 };
                int[] arr3 = { 4, 5, 6, 7, 8 };
                int[] result = CompoundArray(arr1, arr2, arr3);
                foreach (int i in result)
                    Console.WriteLine(i);
            }
            public static int[] CompoundArray(params int[][] arrays)
            {
                List<int> list = new List<int>();
                foreach (int[] arr in arrays)
                    list.AddRange(arr);
                return list.ToArray();
            }
      

  2.   

    如果是值类型,不可避免的需要copy内容,效率肯定不高。
    不过,如果是引用类型就会好很多。
    可以先定义一个结果数组
    MyClass part1 = ****;
    MyClass part2 = ****;
    MyClass[] res = new MyClass[totalSize];
    int destIndex = 0;
    Array.Copy(part1, 0, res, destIndex, part1.Length);
    destIndex += part1.Length;
    Array.Copy(part2, 0, res, destIndex, part2.Length);注意,没有经过调试,可能有小问题
      

  3.   


    支持1楼,这是最快的做法反对4楼,这是很浪费的做法,另外:就算用Stack<T>都比List<T>效率高!