using 之后,还需要调用 FileStream 的 Close 吗?

作者:vkvi 来源:千一网络(原创) 日期:2012-6-17

如上代码,我知道放在 using 代码段中的代码不需要使用 Dispose,但微软没有明确说还要不要 Close。我用了 Close,运行 Visual Studio 代码分析说,不应该要这句。到底要不要 Close 这句呢?

不用

因为在 MSDN 上已经明确 Stream.Close 调用 Dispose,如果还需要的话,就相当于调用两次 Dispose 了,虽然调用两次不出错,但微软的资深工程师不会这样来架构他的程序。

那为什么用了没出错呢?

因为多次调用 Close、Dispose 方法并不会引发异常。

Dipose、Close 区别

代码运行完后 Close.txt、Dispose.txt 的相关资源已经被释放,文件可以被删除,而 资源没释放.txt 由于程序还在运行,资源还没释放,所以不能删除。

对 Close 描述要比 Dispose 多一句话,就是“关闭流”,但我们想一想,Dispose 就是释放一切资源了,一切资源都释放了,这个 Stream 关不关还有什么意义呢,都不存在了。所以我认为二者没有本质区别,并且微软有句话“为适当释放非托管资源,建议您实现公共的 Dispose Close 方法,这两个方法可为对象执行必要的清理代码操作。”。注意那个“或”字。

另外注意

以上针对的是 Stream 的资源释放上来说二者是等效的,但对于其他对象的其他应用就不同了,比如 SqlConnection 的 Close 是指关闭连接,还可以用 Open 再打开,Dispose 就不行了。

你前面那位网友看了:六款文件(夹)时间修改器

▲▲▲嘿,欢迎转载传播本站原创文章,尽量保留来源噢。▲▲▲

文章评论
标题:必填
内容:
本站永远终止与捏造“罪名”不支付广告费的某度联盟合作。
vkvi
vkvi

作者简介: vkvi,致力于 .NET Web 开发、移动开发的技术推广,在 .NET、SQL Server、Windows Server 等方面有深入研究和丰富经验,10 年间共计撰写文章 4000 余篇。 主持金融、国土、农业、电商等多个行业项目执行, 推行“技术提升生产力、人心决定成功率”的管理理论。 联系他