类如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")) { }