Mar*_*ell 11
终结器是确保正确清理某些内容的最后一次尝试,并且通常保留用于包装非托管资源的对象,例如不会被垃圾收集的非托管句柄等.
确实很难写出终结者.幸运的是(并且不像IDisposable),终结器不需要传播; 所以,如果你有ClassA一个终结,和ClassB它包装ClassA,则ClassB不需要终结-但很可能都ClassA与ClassB将实施IDisposable.
对于托管代码,IDisposable通常就足够了.即使您没有正确清理,最终也会收集托管对象(假设它们已被释放).