C# Finalizers

Finalizers (C# Programming Guide)

finalizers 也称为 destructors。

只用于 classes, 不能用于 structs。每个 class 只能有一个。

名字为 ~ClassName,没有参数,access modifiers,返回值。

程序无法调用,由 garbage collector 自动执行。

using System;

public class Destroyer
{
    public override string ToString() => GetType().Name;

    // expression-bodied
    ~Destroyer() => Console.WriteLine($"The {ToString()} destructor is executing.");
}

finalizer 会隐式调用基类的 finalizer,一条继承链将形成一个 finalizer queue,从最近基类到最远基类依次调用。