Здравствуйте, DarthSidius, Вы писали:
DS>Здравствуйте, bazis1, Вы писали:
B>>>>Если не надо читать весь файл сразу, то можно вместо ReadAllLines сделать свою версию на yield return. Издержки на создание итераторов все равно будут минимальными по сравнению с disk IO.
DS>>>Чиать надо построчно — реализация аналогична IDataReader.
DS>>>Ну а теперь приведи весь код с созданием итератора. И мы посмотрим на твою одну строку
B>>Ну тогда надо сравнивать код реализации итератора с кодом вашего вундер-компилятора
DS>Съехал с темы. Слив засчитан.
DS>Значит одной строчкой итератор не создать.
Ага, нужно ВНЕЗАПНО аж целых 3:
public static IEnumerable<string> ReadLineByLine(string fn)
{
using (var sr = File.OpenText(fn))
while (!sr.EndOfStream)
yield return sr.ReadLine();
}
Dispose() по выходу из foreach() вызывается, если что. Причем, этот код пищется один раз, запихивается в какой-нибудь внутренний AcmeUtilityLib и вызывается не сложнее File.ReadAllLines().