Изменить размер массива - C# (187982)

Узнай цену своей работы

Формулировка задачи:

Решаю задачу по загрузке данных из файла в массив. В файле не более 500.000 строк. Я объявляю массив фиксированной длины - миллион строк. С запасом. Это гарантировано перекроет 500.000 строк. Загружаю данные в массив. И считаю количество не пустых записей. Я знаю, что мои данные начинаются с первой записи и заканчиваются MY_table_records_count записью. Файлы бывают разные. Поэтому в моём массиве остаются лишние пустые строки. Это, наверно, занимает память. Как убрать эти лишние строки - изменить размер массива, после его создания? В Delphi это было бы так
SetLength(MY_table, MY_table_records_count);
В Delphi, такая оптимизация существенно влияет на размер занимаемой оперативной памяти. В c# я такого не заметил, что очень странно. Но всё же - как изменить размер уже созданного двумерного массива? Нужно изменить только количество записей. Код
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];

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы