如何在.Net 1.1中的FileStream上实现IDisposable

这可能看起来像一个问题,但我正在看这个,因为我听到有人声称你必须在FileStream上调用Close(),即使它在一个使用块中(并且他们有代码调用Close())就在街区尽头)。

我知道Close()意味着调用Dispose(),但我认为我看起来更深,因为这是.Net 1.1代码,我的大部分经验都是2.0。

让我印象深刻的是,FileStream的MSDN文档为.Net 2.0启用了Dispose()和Dispose(bool),但只为.Net 1.1启用了Dispose(bool)。

我认为这可能是一个疏忽,所以我使用Reflector来查看一个程序集 – 我也看到Dispose(bool),但没有Dispose()。

它是否正确? 如果是这样,这里的故事是什么? FileStream在一个使用块中工作 – 我认为它必须实现IDisposable,据我所知,它只声明Dispose()。

是否有一些编译器魔法正在进行,或者我错过了隐藏的Dispose()实现(可能是调用Dispose(true)或Dispose(false)?)

最后(没有双关语),你能否确认在使用块中使用FileStream的范围将在.Net 1.1中的范围出口处关闭流?

[编辑]

只是为了澄清,这是C#代码。 我知道VB.Net在.Net 2.0之前没有得到using语句,但我的理解是C#在1.1中有它(我的1.1代码在这里有它并编译)

它的实现有点搞笑,但它就在那里:FileStream的基类:System.IO.Stream实现了IDisposable(FileStream只是inheritance它)。

基类流类显式地实现Dispose(),因此如果将流转换为IDisposeable(这是使用{}的内容),您将只看到Dispose()。

Stream.Dispose()调用Stream.Close()。

(通过Reflector获得所有这些)