类如 Stream
、 StreamReader
、 StreamWriter
等实现了 IDisposable
接口。这意味着,我们可以对这些类的对象调用 Dispose()
方法。他们还定义了一个名为 Close()
的 public
方法。这让我很困惑,在处理完对象之后我应该调用什么?如果我两个都打呢?
我现在的代码是这样的:
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()
方法:
好吃吗?