如何在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