Выдает ошибку Destination array was not long enough при изменении размера массива
Выдает ошибку Destination array was not long enough при изменении размера массива.
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;
}
У меня есть таблица, в которой изменяется количество столбцов и строк. Но если таблицу уменьшить, то тогда программа выдает ошибку.
Ответы (1 шт):
Автор решения: Frehzy
→ Ссылка
Если у вас одномерный массив, можно воспользоваться Array.Resize. Если двумерный, попробуйте повторить логику из ответов по ссылке https://stackoverflow.com/questions/6539571/how-to-resize-multidimensional-2d-array-in-c
T[,] ResizeArray<T>(T[,] original, int rows, int cols)
{
var newArray = new T[rows,cols];
int minRows = Math.Min(rows, original.GetLength(0));
int minCols = Math.Min(cols, original.GetLength(1));
for(int i = 0; i < minRows; i++)
for(int j = 0; j < minCols; j++)
newArray[i, j] = original[i, j];
return newArray;
}
Пример использования:
var array = new int[5, 7];
array[1, 2] = 50;
var newArray = ResizeArray(array, 7, 8);
Касаемо Array.Resize:
var array = new int[10];
var newArray = array1;
Array.Resize(ref newArray, 20);