Собсна нужно подгружать из .txt кое-какие данные в программу.Для этого я написал метод который грузит по 1к строк в массивы (1к для того чтоб не забить всю ram): PHP: private List<ListMassive> LoadPhoneNums(StreamReader fileReader) { List<ListMassive> accountsList = new List<ListMassive>(); string line; for (int i = 0; i < 1000; i++) { if ((line = fileReader.ReadLine()) != null) { if (line.Length == 10) { ListMassive listMassive = new ListMassive(); listMassive.oneMassive = line.Substring(0, 3); listMassive.twoMassive = line.Substring(3); accountsList.Add(listMassive); } } else break; } return accountsList; } PHP: public class ListMassive { public string oneMassive; public string twoMassive; } Ну и вопрос - мб можно придумать что-то проще?Сама реализация мне не нравится...
Ограничение по памяти суперское. У тебя максимум 1000 объектов, в каждом из которых по 10 символов. Это 20кб полезных данных! Для сравнения - типичный размер нулевого поколения кучи - порядка сотен килобайт. Ограничил бы миллионом - я бы еще понял. Почему не используешь предвыделение списка? Он у тебя имеет гарантированный размер <= 1000 записей, причем на более-менее крупном файле большинство создаваемых списков будет иметь размер 1000 Твои условные конструкции меня напрягают. Они какие-то... хм... неесстестсвенные А от такого разбора строки у меня шерсть дыбом встает. Хоть бы регулярку впихнул простейшую или руками разобрал, делов то... Класс с публичными не-readonly полями, как это мило... Тебе она просто не нравится, а я чуть не обосрался. А сделать надо было всего ничего - написать эту функцию как итератор. Тут же уходят и проблемы с памятью, и со всякими ненужнмыми промежуточными списками, про возможность юзать на таклом итераторе линк-запросы я вообще молчу. PHP: public IEnumerable<Pair> ReadFile(StreamReader reader) { string line; while( (line = reader.ReadLine()) != null) { yield return Pair.Parse(line); } } public class Pair { public string Item1 { get; set; } public string Item2 { get; set; } public static Pair Parse(string str) { var match = Regex.Match("...", str); return new Pair { Item1 = match.Groups["g1"].Value, Item2 = match.Groups["g2"].Value }; } } ВСЕ!