一次性使用模式

using (FileStream fileStream = new FileStream(path)) { // do something } 

现在我知道using模式是IDisposable的一个实现,即设置了Try / Catch / Finally并在对象上调用Dispose。 我的问题是如何处理Close方法。

MSDN说它没有被调用,但我已经读过了。

我知道FileStreaminheritance自Stream, 这里将对此进行解释。 现在说不要覆盖Close(),因为它是由Dispose()调用的。

那么有些类只是在Dispose()方法中调用Close()或者使用调用Close()吗?

using语句知道Dispose() ,但Stream.Dispose调用Close() ,如MSDN中所述 :

请注意,由于向后兼容性要求,此方法的实现与Dispose模式的建议指南不同。 此方法调用Close,然后调用Stream.Dispose(Boolean)。

仅使用Dispose()调用。 Dispose()方法可能会调用Close(),如果它是如何实现的。

Close()不是IDisposable接口的一部分,因此使用无法知道是否应该调用它。 using只会调用Dispose(),但智能设计的对象将在Dispose()方法中自行关闭。

我不认为使用调用Close(),它无法知道它应该调用该特定函数。 所以它必须调用dispose,而这反过来调用close。

在.Net类中,Close()调用Dispose()。 你也应该这样做。