Я столкнулся с приведенным ниже примером кода в документации MSDN, демонстрируя использование класса System.IO.StreamReader
для чтения текста UTF-8 из объекта System.IO.FileStream
. Два вложенных оператора using
поразили меня как избыточное - конечно, вызов Dispose()
на одном из объектов делает трюк и правильно освобождает дескриптор файла? (Источник: http://msdn.microsoft.com/en-us/library/yhfzs7at.aspx)C# - вложенные операторы с избыточностью?
using (FileStream fs = new FileStream(path, FileMode.Open))
{
using (StreamReader sr = new StreamReader(fs))
{
while (sr.Peek() >= 0)
{
Console.WriteLine(sr.ReadLine());
}
}
}
Не было бы проще, и в равной степени правильно, чтобы переписать этот код следующим образом?
using (FileStream fs = new FileStream(path, FileMode.Open))
{
StreamReader sr = new StreamReader(fs);
while (sr.Peek() >= 0)
{
Console.WriteLine(sr.ReadLine());
}
}
Я считаю, что неплохо распоряжаться всем, что реализует 'IDisposable'. – Tommi
Аналогичный вопрос с хорошими ответами: http://stackoverflow.com/q/9949377/361684 – gilly3