現在ファイナライザーを持っているクラスがありますが、IDisposable を実装していません。Microsoft は、「IDisposable インターフェイスを既存のクラスに追加することは、クラスのセマンティクスを変更するため、バージョン破壊的変更である」と述べています。クラスを「修正」して IDisposable を実装する必要がありますか?
3 に答える
0
IDisposable を追加する場合は、クラスをインスタンス化するすべてのコードに dispose() メソッドを呼び出すコードを追加する必要があります。クラスを呼び出し/インスタンス化するすべてのコードが管理されていない場合、それは簡単ではなく、未処理のオブジェクトにつながる可能性があります。
于 2013-04-05T12:46:28.537 に答える
0
場合によりますが、基本的にはありません。ファイナライザーは、単にメモリを解放するために呼び出されるクリーンアップ メソッドであり、コードを消費することによって呼び出されるという保証はありません。IDisposable は、エラーが発生した場合でも、クラスのインスタンスに対して dispose メソッドを呼び出す必要があることを世界に伝えます。これがあなたのコードを説明している場合、そもそもそれは使い捨てであるべきだったので、答えはイエスです。ただし、これが当てはまる場合は、クラスを使用するすべてのコードを変更して、それらが確実に使い捨てを呼び出すようにする必要があります。
于 2013-04-05T12:47:32.183 に答える
0
このクラスを使用するすべてのコードを制御する場合は、それを実行して、コードを更新して Dispose を呼び出すことができます。そうしないと、既存の外部コードが Dispose() を呼び出さないため、お勧めできません。
于 2013-04-05T12:43:11.650 に答える