Использование объекта IDisposable в методе, который возвращает IEnumerable

Представьте, что у вас есть метод, который внутренне использует объект 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();
38
задан Thomas 1 June 2012 в 11:45
поделиться