将一个锯齿状阵列复制到另一个上面

时间:2010-03-31 01:27:50

标签: c# jagged-arrays

我怎样才能完成将一个锯齿状阵列复制到另一个?例如,我有一个5x7数组:

0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0

和4x3数组:

0,1,1,0
1,1,1,1
0,1,1,0

我希望能够在我的所有零数组上指定一个特定的起始点,例如(1,1),并复制我的第二个数组,以便我得到一个结果,如:

0, 0, 0, 0, 0, 0, 0
0, 0, 1, 1, 0, 0, 0
0, 1, 1, 1, 1, 0, 0
0, 0, 1, 1, 0, 0, 0
0, 0, 0, 0, 0, 0, 0

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

由于您的示例的平方性质,这似乎更适合2D数组而不是锯齿状。但无论哪种方式,你当然可以用老式的方式来做它并循环它。像(未经测试的)

之类的东西
for (int i = 0; i < secondArray.Length; i++)
{
    for (int j = 0; j < secondArray[0].Length; j++)
    {
        firstArray[startingRow + i][startingColumn + j] = secondArray[i][j];
    }
}

编辑:与马克一样,我也略有改善,略有不同,但沿着相同的路线。

for (int i = 0; i < secondArray.Length; i++)
{
    secondArray[i].CopyTo(firstArray[startingRow + i], startingColumn);
}

答案 1 :(得分:2)

即使您的输入不是矩形,这也应该有效:

void copy(int[][] source, int[][] destination, int startRow, int startCol)
{
    for (int i = 0; i < source.Length; ++i)
    {
        int[] row = source[i];
        Array.Copy(row, 0, destination[i + startRow], startCol, row.Length);
    }
}