IDisposable/Disposeを実装して使用するという "パターン化"について議論するには多くの質問がありますが、C#クラスのfinilizer ?C#クラスファイナライザでIDisposableを使うことの利点
他のクラスは、クラスインスタンスがガベージコレクションされ、finilizerが呼び出されるより前に、明示的にDisposeを呼び出すことができます。それは唯一のものですか?
IDisposable/Disposeを実装して使用するという "パターン化"について議論するには多くの質問がありますが、C#クラスのfinilizer ?C#クラスファイナライザでIDisposableを使うことの利点
他のクラスは、クラスインスタンスがガベージコレクションされ、finilizerが呼び出されるより前に、明示的にDisposeを呼び出すことができます。それは唯一のものですか?
ファイナライザ(デストラクタ)がいつ呼び出されるか、あるいはファイナライザ(デストラクタ)が呼び出されることは保証されません。
リソース(ファイル、Db接続)をタイムリーにクリーンアップするには、Disposeパターンが不可欠です。
IDisposableは、デストラクタを避けるために作成されています。デストラクタの問題は、コールされるタイミングを決して知らず、デストラクタを持つオブジェクトが常に最後にクリーンアップされることです。
IDisposableを使用すると、ユーザーに、使用方法を使用する必要があることをクラスに通知します。 例:
using(MyClass myClass = new MyClass())
{
// Do something with MyClass.
}
でなければなりません。実際にそれらを使用することは避けています。 –
http://www.devx.com/dotnet/Article/33167/1954 –
@TimSchmelter _having_デストラクタを避けるために、未解答 – SimpleVar