构造函数和终结器

C#实际上没有析构函数,而是使用 C++样式析构函数语法的终结器。指定析构函数会覆盖无法直接调用的 Object.Finalize() 方法。

与具有类似语法的其他语言不同,当对象超出范围时,不会调用这些方法,但在垃圾收集器运行时会调用这些方法,这在某些条件下会发生。因此,保证它们以任何特定顺序运行。

终结应负责清理非托管资源 (经由 Marshal 类获取的指针,通过 P 接收/调用(系统调用)或不安全的块中使用的原始指针)。要清理托管资源,请查看 IDisposable,Dispose 模式和 using 语句。

(进一步阅读: 我什么时候应该创建一个析构函数?