2012-03-25 8 views
2

IDisposable/Disposeを実装して使用するという "パターン化"について議論するには多くの質問がありますが、C#クラスのfinilizer ?C#クラスファイナライザでIDisposableを使うことの利点

他のクラスは、クラスインスタンスがガベージコレクションされ、finilizerが呼び出されるより前に、明示的にDisposeを呼び出すことができます。それは唯一のものですか?

+1

http://www.devx.com/dotnet/Article/33167/1954 –

+0

@TimSchmelter _having_デストラクタを避けるために、未解答 – SimpleVar

答えて

5

ファイナライザ(デストラクタ)がいつ呼び出されるか、あるいはファイナライザ(デストラクタ)が呼び出されることは保証されません。

リソース(ファイル、Db接続)をタイムリーにクリーンアップするには、Disposeパターンが不可欠です。

1

IDisposableは、デストラクタを避けるために作成されています。デストラクタの問題は、コールされるタイミングを決して知らず、デストラクタを持つオブジェクトが常に最後にクリーンアップされることです。

IDisposableを使用すると、ユーザーに、使用方法を使用する必要があることをクラスに通知します。 例:

using(MyClass myClass = new MyClass()) 
{ 
    // Do something with MyClass. 
} 
+0

でなければなりません。実際にそれらを使用することは避けています。 –

関連する問題