オブジェクトの処理が終わったら、すべてのオブジェクトを null
(VB.NETでは Nothing
) に設定すべきでしょうか?
.NETでは、IDisposable
インターフェイスを実装したオブジェクトのインスタンスをすべて破棄してリソースを解放することが不可欠だと理解していますが、オブジェクトは破棄された後でも何かになることができます(そのため、フォームのisDisposed
プロパティ)ので、メモリ内にまだ存在することができるかどうか、少なくとも部分的にでもあると思います?
また、オブジェクトがスコープ外に出た場合、ガベージコレクタの次のパスに備えて回収のマークを付けることも知っています(ただし、これには時間がかかる場合があります)。
このことを考えると、null
に設定することで、システムがメモリを解放するのが速くなり、スコープから外れたことを確認する必要がなくなるので、悪い副作用はないのでしょうか?
MSDN の記事では、例でこのようなことをすることはなく、現在、私はこのようなことをすることができません。 弊害があるのでしょうか?しかし、私は様々な意見に出くわしたので、どんなコメントでも役に立ちます。
オブジェクトを NULL にしてはいけません。詳細は http://codebetter.com/blogs/karlseguin/archive/2008/04/27/foundations-of-programming-pt-7-back-to-basics-memory.aspx を参照してください。しかし、null を設定しても、あなたのコードが汚れるだけで、何も起こりません。
あるオブジェクトは、リソースをメモリから強制的に削除する .dispose()
メソッドを仮定しています。