さまざまなバージョンの .NET で記述された多くのレガシー システムに取り組んでいて、さまざまな企業にまたがって、次のパターンの例を見つけ続けています。
public void FooBar()
{
object foo = null;
object bar = null;
try
{
foo = new object();
bar = new object();
// Code which throws exception.
}
finally
{
// Destroying objects
foo = null;
bar = null;
}
}
.NET でメモリ管理がどのように機能するかを知っている人にとって、この種のコードは非常に不要です。null
ガベージ コレクターは、古いオブジェクトを収集できることを伝えるために手動で割り当てる必要はありません。割り当てnull
によって、オブジェクトをすぐに収集するように GC に指示することもありません。
このパターンは単なるノイズであり、コードが何を達成しようとしているのかを理解するのが難しくなります。
では、なぜ私はこのパターンを見つけ続けるのでしょうか? この習慣を教えている学校はありますか?null
メモリを正しく管理するために、ローカル スコープの変数に値を割り当てる必要がある言語はありますか? null
私が認識していない明示的な割り当てに追加の価値はありますか?