Первый образец является сокращенным для:
TextReader readLogs = File.OpenText("C:\\FlashAuto\\Temp\\log.txt");
try
{
// My stuff
}
finally
{
if (readLogs != null)
{
((IDisposable)readLogs).Dispose();
}
}
Не то, чтобы он быстрее, а то, что readLogs
будет очищен, даже если возникнет исключение, которое не произойдет во втором примере.
См. с использованием Statement (C # Reference) для получения дополнительной информации.
Нет необходимости вызывать как Close
, так и Dispose
, внутренне Close
Метод выполняет ту же работу, что и метод Dispose
(его просто переименовали, потому что разработчики привыкли иметь метод с именем Close
).
Обновление: Также нетразница между вызовами File.OpenText
и new StreamReader
- внутренне File.OpenText
просто создает и возвращает новый экземпляр StreamReader
.