代码之家  ›  专栏  ›  技术社区  ›  HotTester

在.net中finalize和dispose有什么区别?[副本]

  •  15
  • HotTester  · 技术社区  · 15 年前

    可能重复:
    Finalize vs Dispose

    最近我在一次面试中被问到关于最终确定和处置的问题。它们中的每一个何时被使用,垃圾收集器与它们之间的关系如何。请分享链接,以启发更多关于这个话题。

    提前谢谢。

    2 回复  |  直到 9 年前
        1
  •  17
  •   Joey Gumbo    15 年前

    终结器由垃圾收集在 eligible for collection 被回收。 Dispose() 用于清理非托管资源,如网络连接、文件、操作系统的句柄等 using Dispose() 一旦你处理完一个对象,就会立即调用它,同时也确保你一旦处理完对象就不能再处理它了。

    finalizers don't have to run ,因此依赖它可能是危险的:

    Close Disconnect IDisposable 接口规范了本公约。)

    “the region of program text in which it is legal to refer to [a named entity] by its unqualified name.” )它也不是严格的引用计数,因为即使在对它的最后一个引用消失之前,对象也可以成为有资格收集的对象。

        2
  •  16
  •   Darin Dimitrov    15 年前
    1. 最终确定: 不确定的 不确定性 destructor/finalizer 当没有更多引用到此实例时,由垃圾回收器自动调用。
    2. Dispose:由开发人员在实现 IDisposable
    推荐文章