.net - XMLDocument dispose - 为什么它不支持 IDisposable?

标签 .net xml idisposable using xmldocument

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

  • 它可能会保存大量数据。
  • 它代表一个可能复杂的数据模型。

这将允许您在 Using { ... } 语句中使用它,并且它会在使用后立即被垃圾回收。

但是它似乎不支持它。

在那种情况下,最好的处理方法是什么?

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

或者这里的主要区别是它不占用外部资源,例如数据库连接或外部文件,因此不需要 IDispoable“支持”?

最佳答案

This would allow you to use it inside a Using { ... } statement and it would be garbage collected immediately after use.

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

XmlDocument 的情况下,当没有对它的引用保留时,它就符合垃圾收集的条件,并且它使用的内存将在需要时回收。因此,您只需释放对 XmlDocument 的所有引用并等待 GC 完成其工作。请注意,您可以强制执行 GC 循环,但您可能不应该:GC 是一项代价高昂的操作,系统比您更清楚什么时候是执行它的正确时间。

关于.net - XMLDocument dispose - 为什么它不支持 IDisposable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8124062/

相关文章:

ioc-container - IOC 容器和 IDisposable

.net - PowerShell 找不到过载

c# - 在相等性测试中使用字符串文字是否会创建新字符串?

xml - Swift xml 解析器导致错误

iphone - 如何检查连接到互联网的 url?

c# - Process.Dispose() 实际上做了什么?

.NET:如何禁用 System.Transactions 中的提升?

C# listview 可点击的列和行

xml - XSLT : Using choose to transform tag value depending on true/false

c# - 处理处理 IDisposable 对象的通用函数