次の方法で共有


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 デストラクタ