Как изменить размер двумерного массива? - C#
Формулировка задачи:
Вот часть кода, создающая массив. По идее массив должен быть динамическим. Но в C# я не нашел "адекватного" способа это сделать.
Поэтому забил
(Цитата с этого форума -"Следует отметить, что динамический массив может быть только одномерным. Нижняя граница его индекса равна 0, а количество содержащихся в нем элементов возвращает его свойство Length.")
Я создаю статический массив, из миллиона записей и 11 элементов. (да 50-100 мб памяти впустую, а жаль некрасиво)
Далее заполняю (изменяю) его элементы, попутно подсчитывая номер последнего измененного элемента.
Теперь мне надо изменить его размер, по возможности с минимальным использованием памяти.
Как это сделать?
public static int excel_array_records_count = 0; //Количество непустых записей в массиве - глобальная переменная
public static string[,] excel_array = new string[1000000, 11]; //Глобальный двумерный массив (первый элемент пустой)
public void create_excel_array(string file_path)
{
//Тут код
excel_array_records_count++;
excel_array[excel_array_records_count, 1] = ((excel_worksheet.Cells[c, column_1]).Value ?? string.Empty).ToString();
excel_array[excel_array_records_count, 1] = ((excel_worksheet.Cells[c, column_2]).Value ?? string.Empty).ToString();
//Тут код
}Решение задачи: «Как изменить размер двумерного массива?»
textual
Листинг программы
string[][][] arr = new string[0][][];
Meth(out arr);
for (int i = 0; i < arr.Length; i++)
{
Array.Resize<string[]>(ref arr[i], arr[i].Length + 1);
}
public void Meth(out string[][][] arr)
{
arr = new string[10][][];
for (int i = 0; i < arr.Length; i++)
{
arr[i] = new string[1][];
arr[i][0] = new string[1];
}
}