一次性使用模式
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()。 你也应该这样做。