Представьте, что у вас есть метод, который внутренне использует объект IDisposable (например, потоковое чтение), а yield возвращает элементы по мере их считывания из файла. Примерно так:
public IEnumerable<YourObject> Read(string filename)
{
using(var filestream = new FileStream(filename, FileMode.Open))
{
using(var reader = new StreamReader(filestream))
{
string line;
while((line = reader.ReadLine()) != null)
{
yield return new YourObject(line);
}
}
}
}
Будут ли читатель
и файловый поток
удалены, когда я использую LINQ-методы, которые не перебирают всю коллекцию?
YourOjbect firstLine = Read("myfile.txt").First();