Để trả lời câu trả lời của Michael Damatov (C#) dựa trên Herfried K. Wagner. (VB.NET) đây là phiên bản C++/CLI:
ref class MyClass
{
ref class StaticFinalizer sealed
{
!StaticFinalizer();
};
static initonly StaticFinalizer^ stDestr = gcnew StaticFinalizer();
}
MyClass::StaticFinalizer::!StaticFinalizer()
{
System::Diagnostics::Debug::WriteLine("In StaticFinalizer!");
}
P.S. Cũng giống như phương thức AppDomain.ProcessExit, phương thức này có thể không được gọi nếu quá trình được kết thúc bất thường (từ Trình quản lý Tác vụ chẳng hạn). Một lời cảnh cáo khác là nếu MyClass là chung (templated), giả thiết rằng hàm tạo tĩnh của nó và hàm hủy tĩnh sẽ được gọi không quá một lần cho mỗi lần thực hiện ứng dụng không còn hợp lệ nữa.
Nguồn
2014-07-31 20:03:23
Đầu tiên, trong C#, chúng ta cần thoát ra khỏi thói quen sử dụng finalizer và destructor interchangably. Một là xác định, cái kia thì không. Thật thú vị khi lưu ý rằng thông số C# nhận các điều khoản ngược từ CLR và các đặc tả ngôn ngữ .NET khác.Nó cũng thú vị để lưu ý rằng các ghi chú của ủy ban ngôn ngữ C# rõ ràng nói rằng không có lý do tại sao C# không thể có finalizers tĩnh. http://stackoverflow.com/a/1875149/56793 – JMD