首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在成员StringWriter传递给XMLTextWriter时调用close

在成员StringWriter传递给XMLTextWriter时调用close
EN

Stack Overflow用户
提问于 2015-08-20 21:45:55
回答 1查看 317关注 0票数 0

我发现一些代码没有正确地用using子句包装XMLTextWriter和StringWriter。当我更正的时候,我偶然发现了一个有趣的问题:

是否必须在每个编写器上显式添加对Close()的调用,还是XMLTextWriter自动处理对StringWriter实例的Close()调用?

代码语言:javascript
复制
    using (StringWriter stringWriter = new StringWriter(sb))
    {
        using (XmlTextWriter writer = new XmlTextWriter(stringWriter))
        {
            writer.Flush();
            writer.Close();
        }

        // is stringWriter.Close();  required here?
    }

萨克斯·马特

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-20 21:52:57

通常,如果using语句中的类正确地实现了IDisposable (在本例中,如果StringWriterXmlTextWriterDispose方法实现中调用它们的Close方法),则不需要这样做。

using块的末尾,将自动调用Dispose方法。

XmlTextWriter.cs类的引用源中,您可以看到Close()方法中的下面一行

代码语言:javascript
复制
textWriter.Close();

在构造函数中接收到textWriter,所以您的问题的答案是,您不需要来调用StringWriter实例上的Close()方法,但是这样做不会有什么害处。

有关IDisposable的更多信息,请访问此链接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32128946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档