我发现一些代码没有正确地用using子句包装XMLTextWriter和StringWriter。当我更正的时候,我偶然发现了一个有趣的问题:
是否必须在每个编写器上显式添加对Close()的调用,还是XMLTextWriter自动处理对StringWriter实例的Close()调用?
using (StringWriter stringWriter = new StringWriter(sb))
{
using (XmlTextWriter writer = new XmlTextWriter(stringWriter))
{
writer.Flush();
writer.Close();
}
// is stringWriter.Close(); required here?
}萨克斯·马特
发布于 2015-08-20 21:52:57
通常,如果using语句中的类正确地实现了IDisposable (在本例中,如果StringWriter和XmlTextWriter在Dispose方法实现中调用它们的Close方法),则不需要这样做。
在using块的末尾,将自动调用Dispose方法。
在XmlTextWriter.cs类的引用源中,您可以看到Close()方法中的下面一行
textWriter.Close();在构造函数中接收到textWriter,所以您的问题的答案是,您不需要来调用StringWriter实例上的Close()方法,但是这样做不会有什么害处。
有关IDisposable的更多信息,请访问此链接。
https://stackoverflow.com/questions/32128946
复制相似问题