0

C++ CLI でのデストラクタとファイナライザの違いについて説明しているこの記事を参照した後、なぜコンパイラはいくつかの命令を追加するのか疑問に思います。デストラクタでファイナライズを抑制するには?

線量ファイナライズ関数は「In finally, it will be called by GC」の略ではありませんか?

デストラクタとファイナライザの両方に同じ「リリース リソース」コードを追加する必要がありますか?

4

1 に答える 1

0

デストラクタ (C# の Dispose メソッド) を記述するときは、オブジェクトをクリーンアップするすべての作業を行う必要があります。適切に記述されたデストラクタを使用すると、ファイナライザが行うことは何も残っていないため、コンパイラはそれを抑制します。

C# では、パターンは Dispose(bool) メソッドを記述し、Boolean で破棄するかファイナライズするかを示します。C++/CLI では、コンパイラがそのメソッドを記述するため、許可されていません。コードを繰り返したくない場合は、デストラクタからファイナライザを呼び出すだけでよいと思います。

于 2012-07-24T16:21:13.393 に答える