我们是否需要在使用块中关闭C#BinaryWriter或BinaryReader?

dav*_*led 8 c# idisposable using

有这个代码:

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

我们需要关闭BinaryWriter吗?如果没有,为什么?

Luk*_*keH 18

只要它全部包含在一个using块中,那么你就不需要显式调用了Close.

using块将确保对象被丢弃,Close并且Dispose方法可以互换BinaryWriter.(该Close方法只是Dispose在幕后调用.)


jjx*_*tra 5

使用您那里的代码,一旦退出 using 块,它将关闭文件,因此您不需要显式调用 close 。

不使用 using 语句的唯一原因是,如果您希望文件在完成 BinaryWriter 后仍然打开,在这种情况下,您应该保留它的引用,而不是像这样将其传递到构造函数中。