XmlWriter:如果使用using块,是否需要调用Close()?

P a*_*u l 13 c#

使用using块创建XmlWriter是否足够(没有调用Close())或者最好使用try/finally块并最终调用Close()?

wom*_*omp 16

using块是try/finally块的快捷方式,在任何实现IDisposable的对象上调用Dispose().

对于流和流写入器,Dispose()通常手动调用Close().使用反射器,这是XmlWriter的Dispose方法:

protected virtual void Dispose(bool disposing)
{
    if (this.WriteState != WriteState.Closed)
    {
        try
        {
            this.Close();
        }
        catch
        {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以简短的回答是肯定的,该using块将处理为您关闭XmlWriter.