如何在C#中调整多维(2D)数组的大小?

我尝试了以下操作,但它只返回一个错误的数组。

    T[,] ResizeArray<T>(T[,] original, int rows, int cols)

{

var newArray = new T[rows,cols];

Array.Copy(original, newArray, original.Length);

return newArray;

}

回答:

谢谢托马斯,您的解释非常有帮助,但是您实施的解决方案太慢了。我对其进行了修改,以充分利用Array.Copy。

    void ResizeArray<T>(ref T[,] original, int newCoNum, int newRoNum)

{

var newArray = new T[newCoNum,newRoNum];

int columnCount = original.GetLength(1);

int columnCount2 = newRoNum;

int columns = original.GetUpperBound(0);

for (int co = 0; co <= columns; co++)

Array.Copy(original, co * columnCount, newArray, co * columnCount2, columnCount);

original = newArray;

}

在这里,我假设行多于列,因此我将数组构造为[列,行]。这样一来,我就可以在一列中对整个列使用Array.Copy(一次快于一个单元格)。

它仅可用于增加数组的大小,但也可以对其进行调整以减小大小。

以上是 如何在C#中调整多维(2D)数组的大小? 的全部内容, 来源链接: utcz.com/qa/409956.html

回到顶部