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