C# および C++ マネージ拡張のデストラクタ構文の使用
C# プログラミング言語または C++ マネージ拡張プログラミング言語からは、Object.Finalize メソッドを呼び出したり、オーバーライドしたりすることはできません。C# および C++ マネージ拡張では、終了コードを記述するための機構として、デストラクタが用意されています。C# および C++ マネージ拡張でクリーンアップ操作を実行するには、デストラクタ構文を使用する必要があります。この構文は、オブジェクトの基本クラスの Finalize メソッドを暗黙的に呼び出すので便利です。これにより、現在のクラスの派生元となったすべてのレベルのデストラクタで Finalize が呼び出されることが保証されます。
デストラクタ用のコード例を次に示します。
~MyClass()
{
// Perform some cleanup operations here.
}
このコードは、暗黙的に次のように変換されます。
protected override void Finalize()
{
try
{
// Perform some cleanup operations here.
}
finally
{
base.Finalize();
}
}
メモ C# のデストラクタと C++ マネージ拡張のデストラクタは、C++ のアンマネージ デストラクタと同じように見えますが、セマンティクスが異なります。マネージ コードでは、C++ のデストラクタと類似のセマンティクスは一切サポートされていません。
参照
アンマネージ リソースのクリーンアップ | Finalize メソッドのオーバーライド | Finalize メソッド | 1.7.9 デストラクタ