私はいくつかのコードを見ていますが、それはこのステートメントがあります:
~ConnectionManager()
{
Dispose(false);
}
このクラスはIDisposable
インターフェイスを実装していますが、それがチルダ(〜)の使用対象であるかどうかはわかりません。
〜はデストラクタです
最終化
C#では、Finalizeメソッドは標準C++デストラクタが行う操作を実行します。 C#では、Finalizeという名前を付けません。クラス名の前にチルダ(〜)シンボルを配置するC++デストラクタ構文を使用します。
破棄
クラスのユーザーが明示的に呼び出すことができるClose()
またはDispose()
メソッドでオブジェクトを破棄することをお勧めします。ファイナライズ(デストラクタ)はGCによって呼び出されます。
IDisposableインターフェイスは、破棄する必要のあるリソースをクラスが保持していることを世界に伝え、ユーザーにそれらを解放する方法を提供します。クラスにファイナライザを実装する必要がある場合は、DisposeメソッドshouldGC.SuppressFinalize()
メソッドを使用して、インスタンスは抑制されます。
使用するもの
デストラクタを明示的に呼び出すことは違法です。デストラクタは、ガベージコレクタによって呼び出されます。できるだけ早く閉じて破棄する貴重なアンマネージリソース(ファイルハンドルなど)を処理する場合は、IDisposableインターフェイスを実装する必要があります。
これは ファイナライザー です。正直に言うと、ファイナライザーを作成する必要はほとんどありません。本当に必要なのは、次の場合のみです。
IntPtr
を介して)、SafeHandle
を使用できないため、簡単になりますIDisposable
を実装しています。 (私の好みは、継承用に設計されていないクラスを封印することです。)そのような場合、ファイナライザは正規のDisposeパターンの一部です。クラスのデストラクタを示すために使用されます。
C++と同じ、デストラクタです。ただし、C#では明示的に呼び出さず、オブジェクトが収集されるときに呼び出されます。
デストラクタ(C#プログラミングガイド) を参照してください。ただし、C++とは異なり、デストラクタが呼び出されるタイミングはガベージコレクタによって決定されるため、プログラマは制御できません。
〜は通常、解体者を表します。オブジェクトが死ぬ直前に実行されます。