Я написал небольшой проект, который будет считывать несколько CSV-файлов в зубчатый массив (каждый csv в 1 зубчатый массив). Все массивы будут храниться в списке. После этого у меня есть заданное измерение, в которое я хочу изменить размер каждого массива (с заданными столбцами и строками). Код:
private void resizeArray( double[][] matrixToResize, int maxRow, int maxColumn)
{
Array.Resize(ref matrixToResize, maxRow);
for (int i = 0; i < matrixToResize.Length; i++)
{
Array.Resize(ref matrixToResize[i], maxColumn);
}
}
private void resizeArrayList(List<double[][]> csvList, Dimension dimension)
{
foreach (Double[][] matrix in csvList)
{
resizeArray(matrix, dimension.Max_Rows, dimension.Max_Columns);
}
}
resizeArrayList
будет вызываться 1. и затем будет вызываться resizeArray
для изменения размера строк и после этого изменения размера для каждой строки заданного количества столбцов.
Моя проблема: В resizeArray
все работает хорошо, например: у меня есть массив из 5 строк и 5 столбцов и мне нужно 10 строк и 10 столбцов,
я сначала размер этого массива до 10 строк и после этого каждая строка до 10 столбцов. Прежде чем resizeArray
вернется к resizeArrayList
, все выглядит нормально, у меня есть 10 строк с каждыми 10 столбцами. Но после того, как код возвращается к методу resizeArrayList
, он имеет 5 строк с 10 (!) столбцами в каждой. Таким образом, в основном изменение размера столбцов работает нормально, но 5 добавленных строк исчезли, вернувшись к исходному размеру строк.
Я знаю, что могу решить эту проблему, передав весь зубчатый массив обратно и прочитав его в список. Но почему это так?
Оба раза я использую функцию изменения размера с ref. Но он просто сохраняет столбцы, а не строки с измененным размером.