拥有此代码:

using (BinaryWriter writer = new BinaryWriter(File.Open(ProjectPath, FileMode.Create)))
{
   //save something here
}

我们需要关闭二进制作者吗?如果没有,为什么?

有帮助吗?

解决方案

只要全部包裹在 using 块然后您无需明确打电话 Close.

using 块将确保对象被处置,并确保 CloseDispose 方法可以互换 BinaryWriter. 。 (这 Close 方法只是调用 Dispose 幕后。)

其他提示

按照您的代码示例将其放入使用语句中,将调用Dispose,即关闭基础流,因此没有。您可以通过反射器看到这一点:

protected virtual void Dispose(bool disposing)
{
    if (disposing)
    {
        this.OutStream.Close();
    }
}

使用代码,您将在文件退出使用块后关闭该文件,因此您无需调用Close Complecit。

不使用使用语句的唯一原因是,如果您希望文件在与二进制作者完成后仍然打开,在这种情况下,您应该坚持使用它的引用,而不是将其传递到构造函数中。

使用块将自动关闭二进制作者,并将其放在要gced的状态下。使用块是句法糖,以便自行处理和关闭流。

通过将作者包裹在使用块中,当作者处置作者时,将自动发生关闭。因此,在这种情况下,您无需明确关闭作者。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top