C# has static constructor which do some initialization (likely do some unmanaged resource initialization).
I am wondering if there is static destructor?
Not exactly a destructor, but here is how you would do it:
class StaticClass { static StaticClass() { AppDomain.CurrentDomain.ProcessExit += StaticClass_Dtor; } static void StaticClass_Dtor(object sender, EventArgs e) { // clean it up } }