같은 클래스 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()
메소드를 호출 합니다.
좋은가요?
using (MemoryStream ms1 = new MemoryStream(), ms2 = new MemoryStream()) { }
. 나는 당신이 타입을 재정의 할 수있는 이런 식으로 의미합니다 :using (MemoryStream ms = new MemoryStream()) using (FileStream fs = File.OpenRead("c:\\file.txt")) { }