将2维阵列线向下移动一级

时间:2016-04-19 21:04:37

标签: c# arrays

我有二维数组看起来像那样:

1 2 3
4 5 6
7 8 9

我希望将每一行的每一行复制一下,并使用我的方法生成新的第一行,如下所示:

x x x
1 2 3
4 5 6

复制前的最后一行将被删除。有没有更好的方法来做到这一点,而不仅仅是将所有内容复制到新数组,然后将所有内容复制回原始数组?

2 个答案:

答案 0 :(得分:0)

您可以在不创建临时数组的情况下移动值:

for (int j = arr.GetLength(1) - 1; j > 0 ; j--)   // replaces the values  
    for (int i = 0; i < arr.GetLength(0); i++)    // of each row with the  
        arr[i, j] = arr[i, j - 1];                // previous row values

然后,复制新值:

for (int i = 0; i < arr.GetLength(0); i++)
    arr[i, 0] = /* new row values */

答案 1 :(得分:0)

我相信这个功能能达到你想要的效果;

    public  int?[,] PushDown(int?[,] intArray)
    {
        for (var i = intArray.GetLength(0) - 1; i >= 0; i--)
        {
            for (var j = intArray.GetLength(0) - 1; j >= 0; j--)
            {
                if ((i - 1) < 0)
                {
                    intArray[i, j] = null;
                }
                else
                {
                    intArray[i, j] = intArray[i - 1, j];
                }
            }
        }
        return intArray;
    }