Изменить размер массива - C# (187982)
Формулировка задачи:
Решаю задачу по загрузке данных из файла в массив. В файле не более 500.000 строк.
Я объявляю массив фиксированной длины - миллион строк. С запасом. Это гарантировано перекроет 500.000 строк.
Загружаю данные в массив. И считаю количество не пустых записей.
Я знаю, что мои данные начинаются с первой записи и заканчиваются MY_table_records_count записью.
Файлы бывают разные. Поэтому в моём массиве остаются лишние пустые строки. Это, наверно, занимает память.
Как убрать эти лишние строки - изменить размер массива, после его создания?
В Delphi это было бы так
В Delphi, такая оптимизация существенно влияет на размер занимаемой оперативной памяти.
В c# я такого не заметил, что очень странно. Но всё же - как изменить размер уже созданного двумерного массива?
Нужно изменить только количество записей.
Код
SetLength(MY_table, MY_table_records_count);
public void load_MY_xml_in_memory() { // Объявляем двумерный массив string[,] MY_table = new string[100000, 4]; int MY_table_records_count = 0; //Количество непустых записей в массиве (изначально 0 записей) xmlDoc.Load("XML_files\\MY\\MY.xml"); foreach (XmlNode task in xmlDoc.DocumentElement.ChildNodes) { MY_table_records_count = MY_table_records_count + 1; MY_table[MY_table_records_count, 0] = task.Attributes.GetNamedItem("ONE").Value; MY_table[MY_table_records_count, 1] = task.Attributes.GetNamedItem("TWO").Value; MY_table[MY_table_records_count, 2] = task.Attributes.GetNamedItem("THREE").Value; MY_table[MY_table_records_count, 3] = task.Attributes.GetNamedItem("FOUR").Value; } //Мы создали массив в миллион записей, а реально заполнено, скажем 90000. Остальные пустые. }
Решение задачи: «Изменить размер массива»
textual
Листинг программы
xmlDoc.Load("XML_files\\MY\\MY.xml"); string[,] MY_table = new string[xmlDoc.DocumentElement.ChildNodes.Count, 4];
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д