Классы, такие как Stream, StreamReader, StreamWriter и т.д. реализуют интерфейс IDisposable. Это означает, что мы можем вызвать метод Dispose() на объектах этих классов. Они также определили метод public, называемый Close(). Теперь, что меня смущает, что я должен назвать, когда я закончил с объектами? Что, если я позвоню им?
Мой текущий код:
using (Stream responseStream = response.GetResponseStream())
{
   using (StreamReader reader = new StreamReader(responseStream))
   {
      using (StreamWriter writer = new StreamWriter(filename))
      {
         int chunkSize = 1024;
         while (!reader.EndOfStream)
         {
            char[] buffer = new char[chunkSize];
            int count = reader.Read(buffer, 0, chunkSize);
            if (count != 0)
            {
               writer.Write(buffer, 0, count);
            }
         }
         writer.Close();
      }
      reader.Close();
   }
}
Как вы видите, я написал конструкторы using(), которые автоматически вызывают метод Dispose() для каждого объекта. Но я также называю методы Close(). Правильно?
Пожалуйста, предложите мне лучшие практики при использовании объектов потока.: -)
В примере MSDN не используются конструкторы using() и вызывается метод Close():
Это хорошо?
