Вот сам метод:
protected virtual void Dispose(bool disposing) {
if (disposing) {
Stream copyOfStream = m_stream;
m_stream = null;
if (copyOfStream != null && !m_leaveOpen)
copyOfStream.Close();
}
m_stream = null;
m_buffer = null;
m_decoder = null;
m_charBytes = null;
m_singleChar = null;
m_charBuffer = null;
}
m_stream — базовый поток
m_leaveOpen — задается в конструкторе, если желаем не закрывать поток при Dispose ридера.
Какой смысл скрывается за созданием ссылки на поток (copyOfStream)? Почему нельзя было вызвать
m_stream.Close();
m_stream = null;
Связано ли это с особенностями сборки мусора?