XMLDocument处理 - 为什么它不支持IDisposable?

Rem*_*tec 2 .net xml xmldocument idisposable using

XMLDocument类似乎是支持IDisposable的理想候选者,因为......

  • 它可能会包含大量数据.
  • 它表示可能复杂的数据模型.

这将允许您在Using {...}语句中使用它,并在使用后立即进行垃圾收集.

但它似乎不支持它.

在那种情况下,处理它的最佳方式是什么?

或者它不需要支持IDisposable - 我想你可以在完成它之后将其引用设置为null?

或者它的关键区别在于它不会占用外部资源,例如数据库连接或外部文件,因此不需要IDispoable"支持"?

Tho*_*que 5

这将允许您在Using {...}语句中使用它,并在使用后立即进行垃圾收集.

不,它会被放置立即使用后,没有垃圾收集.处置和垃圾收集不是一回事,尽管它们可能看起来很相似.Dispose旨在释放非托管资源,例如数据库连接,文件句柄,非托管内存等.垃圾收集回收未使用的托管内存.

XmlDocument没有引用它的情况下,它就有资格进行垃圾收集,并且在需要时将回收它使用的内存.所以你只需要释放所有引用XmlDocument并等待GC完成它的工作.请注意,您可以强制执行GC循环,但您可能不应该这样做:GC是一项昂贵的操作,系统在适当的时候比您更了解.