c# - close, dispose, finalize, GC, Idisposable,....你对它们有清楚的描述吗?

标签 c# garbage-collection dispose idisposable finalize

我对 close、dispose、finalize、GC、Idisposable 完全困惑。 哦,你能给我发一份关于它们的清晰描述吗?

最佳答案

这是一个相当大的话题。我可以推荐这本书吗 CLR via C#由里希特。它详细介绍了您提到的所有问题。

一个非常简短的翻译:

  • 在一次性类型上,Close 通常与 Dispose 相同。
  • Dispose 用于确定性地清理未被垃圾回收处理的资源。
  • Finalizer(或 C# 语言规范所称的析构函数)是垃圾收集代码在某个时间点调用的清理方法。 IE。与 C++ 的析构函数不同,这不是在明确定义的时间点完成的。
  • GC 是垃圾收集的缩写,指的是 .NET 对位于托管堆上的对象的自动清理。
  • IDisposable 是一个接口(interface),声明所讨论的类型实现了上面概述的 Dispose 方法。

更多细节请查阅本书。 This rather elaborate blog entry Joe Duffy 的著作对于理解 IDisposable 和终结器也非常有用。

关于c# - close, dispose, finalize, GC, Idisposable,....你对它们有清楚的描述吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1198914/

相关文章:

python - cpython 做了什么来帮助检测对象循环(引用计数)?

python - 调试 Python fatal error : GC Object already Tracked

java - 如果有一个列表一直持有300,000个对象,gc会不会有不好的表现?

c# - 棘手的 IDisposable 问题

c# - 窗体关闭时如何处理IE?

c# - 为什么代码分析告诉我,这里是 "Do not dispose objects multiple times":

c# - 如何在c#中定义一个等值数组?

c# - 如何延迟加载具有多行的标准 html 表?

c# - 使用 DataGrid 在一列中显示多个标题

c# - 如何阻止 JIT 调试器介入崩溃的 wcf 服务?