Следующее использует блоки итератора и, следовательно, использует отложенную загрузку.В других решениях вы загружаете весь файл в память, прежде чем сможете выполнять итерации по словам.
static IEnumerable<string> GetWords(string path){
foreach (var line in File.ReadLines(path)){
foreach (var word in line.Split(null)){
yield return word;
}
}
}
( Разделение (ноль) автоматически удаляет пробел )
Использованиеэто примерно так:
foreach (var word in GetWords(@"text.txt")){
Console.WriteLine(word);
}
Работает и со стандартными функциями Linq:
GetWords(@"text.txt").Take(25);
GetWords(@"text.txt").Where(w => w.Length > 3)
Конечно, обработка ошибок и т. д. оставлена для изучения.