我今天在写一些IDisposable
代码时正在考虑这个问题。
开发人员最好Dispose()
直接调用,或者如果对象的生命周期允许,使用using
构造。
我们需要担心的唯一实例是那些using
由于代码机制而无法使用的实例。但我们应该在某个时候调用Dispose()
这些对象。
鉴于 C# 编译器知道一个对象 implements IDisposable
,理论上它也可以知道它Dispose()
从未被调用过(它是一个非常聪明的编译器!)。它可能不知道程序员何时应该这样做的语义,但它可以很好地提醒它永远不会被调用,因为它从未在using
构造中使用过,并且Dispose()
从未在任何实现的对象上直接调用该方法IDisposable
.
这有什么原因,还是有想法走这条路?