如何IDisposable接口上的FileStream在.net 1.1实施
-
06-09-2019 - |
题
这可能看起来像一个诺迪的问题,但我一直在寻找这一点,因为我听到有人声称必须调用Close()上一个FileStream,即使是在使用块(和他们的代码,其中关闭()被在所述块的端部)称为右
我知道,关闭()是指调用Dispose(),但我想我会看的更深一些,因为这是NET 1.1的代码,以及我的经验,大部分已与2.0。
有一件事情,让我吃惊的是,为的FileStream MSDN文档具有的Dispose()和处置(布尔)为.Net的2.0,但只处置(布尔)为NET 1.1。
我想这可能是一个疏忽,所以我使用反射来看看组装 - 有过,我看到的Dispose(布尔),但没有的Dispose()
。这是正确的吗?如果是这样,这里有什么故事吗?的FileStream工作在一个使用块 - 而且我认为他的意思,必须实现IDisposable它,就我所知,只有声明的Dispose()
有一些编译器魔法回事,还是我失去了一个隐藏实现的Dispose()的地方(这,想必,调用Dispose(真)或Dispose(假)?)
最后(无双关),可以确认,在使用块将在NET 1.1收范围出口流范围界定一个FileStream?
[编辑]
只是为了澄清,这是C#代码。据我所知,VB.Net没有得到using语句,直到NET 2.0,但我的理解是,C#有它在1.1(和我的1.1代码在这里有它在,它编译)
解决方案
它实现了一个有点滑稽,但它的存在: 对的FileStream基类:System.IO.Stream实现IDisposable(的FileStream只是继承它)
。在基本流类实现的Dispose()明确,所以你只能看到的Dispose()如果投射的流作为IDisposeable(这是使用{}什么一样)。
Stream.Dispose()调用Stream.Close()。
(得到这个所有经由反射器)