回答:
〜はデストラクタです
ファイナライズ
C#では、Finalizeメソッドは、標準のC ++デストラクタが行う操作を実行します。C#では、Finalizeという名前は付けません。C++デストラクタ構文を使用して、クラスの名前の前にチルダ(〜)記号を配置します。
廃棄
クラスのユーザーが明示的に呼び出すことができるClose()
またはDispose()
メソッドでオブジェクトを破棄することをお勧めします。Finalize(デストラクタ)はGCによって呼び出されます。
IDisposableをインターフェイスは、あなたのクラスを配置するために必要なリソース上に保持し、ユーザーがそれらを解放する方法を提供することを世界に伝えます。クラスにファイナライザーを実装する必要がある場合は、DisposeメソッドでこのGC.SuppressFinalize()
メソッドを使用して、インスタンスのファイナライズが確実に抑制されるようにする必要があります。
何を使う?
デストラクタを明示的に呼び出すことは違法です。デストラクタはガベージコレクタによって呼び出されます。できるだけ早く閉じて破棄したい貴重なアンマネージリソース(ファイルハンドルなど)を処理する場合は、IDisposableインターフェイスを実装する必要があります。
Finalize
メソッドは、継承チェーンのすべてのインスタンスに対して、最も派生したものから最も派生していないものへと再帰的に呼び出される」ので、少し混乱しています。それはだと注意ではないあなたがが、継承デストラクタから得るだろうと同じ動作が。
クラスのデストラクタを示すために使用されます。
try/finally
、親Finalize
メソッドが確実に呼び出されるようにする、一般的に使用されないブロックを含むファイナライザを自動生成します。デストラクタに当てはまることのほとんどはファイナライザにも当てはまりますが、逆も同様ですが、単語の意味は少し異なります。
C ++と同じですが、これはデストラクタです。ただし、C#では明示的に呼び出さず、オブジェクトが収集されたときに呼び出されます。
デストラクタ(C#プログラミングガイド)を参照してください。ただし、C ++とは異なり、デストラクタが呼び出されるタイミングは、ガベージコレクタによって決定されるため、プログラマが制御できないことに注意してください。
〜は通常、デコンストラクターを表します。オブジェクトが死ぬ直前に実行されます。