【发布时间】:2010-07-07 13:56:26
【问题描述】:
还有比这更高效的连接二维数组的方法吗?
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;
}
【问题讨论】:
-
您是否认为这会占用您大量的处理时间?如果没有,请不要理会它。
-
现有方法的性能如何?
-
问题是我将把它合并到一个非常关键的代码中,根据我的测试结果,它在可接受的范围内表现良好,我只是想确保它是我能做的最好的
标签: c# copy concatenation multidimensional-array