什么是差异B / w处理和c#中的终结方法

时间:2015-10-16 17:08:29

标签: c# .net

我发现许多文章和表格定义了b / w最终确定和处理方法的差异,但现在我仍有一个疑问。 怀疑:我们知道在运行时类的析构函数转换为finalize方法。如果我们没有在Class中定义析构函数会发生什么。我的意思是,到现在为止,析构函数将转换为finalize与否? 。内存管理将如何执行。

1 个答案:

答案 0 :(得分:1)

在实现Dispose的类上存在IDisposable方法(我猜你可能有一个没有接口的方法,但它没那么有用)。在这种方法中,您应该清理所有未管理的资源。它还:

  1. 允许您在对象周围放置using块,以便框架为您调用Dispose
  2. 让用户知道他们应该在让对象超出范围之前调用Dispose
  3. 终结器(碰巧看起来像C ++析构函数)被垃圾收集器调用......最终。鉴于在调用它时你没有控制权,你应该非常小心依赖它们。没有一个根本没有问题(绝大多数,几乎所有的课程都不需要它们)。此外,如果您实现IDisposable肯定不需要一个,因为在终结器运行之前,应该已经释放了非托管资源(并且GC.SuppressFinalize已调用)。