-
Finalizeメソッドを使用する方法: C#では、デストラクタは実際にはFinalizeメソッドとして定義されます。オブジェクトが破棄される際にFinalizeメソッドが呼び出されるため、デストラクタの役割を果たすことができます。以下は、Finalizeメソッドを使用してデストラクタをトリガーする例です。
class MyClass { ~MyClass() { // デストラクタの処理 } }
この場合、MyClassのインスタンスが破棄される際にFinalizeメソッドが呼び出され、デストラクタの処理が実行されます。
-
Disposeパターンを使用する方法: IDisposableインターフェースを実装し、Disposeパターンを使用することもデストラクタをトリガーする方法の一つです。以下は、Disposeパターンを使用してデストラクタをトリガーする例です。
class MyClass : IDisposable { private bool disposed = false; public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (!disposed) { if (disposing) { // マネージリソースの解放 } // アンマネージリソースの解放 disposed = true; } } ~MyClass() { Dispose(false); } }
この場合、MyClassのインスタンスがDisposeメソッドで明示的に破棄されなかった場合、Finalizeメソッドが呼び出されてデストラクタの処理が実行されます。