3

オブジェクトの配列が設定されているとしましょう。

 Resource[] list = new Resource[100000];

ときどき、このリストのオブジェクトをデフォルト値に変更したいと思います。

 Resource defaultResource = new Resource();

そして後で、アイテムがデフォルトかどうかを確認したいと思います。したがって、リスト オブジェクトをデフォルト値に設定する場合と、値を null に設定する場合のパフォーマンスの違いは何だろうかと考えています。

 list[i] = defaultResource; /*versus*/ list[i] = null;

本当に、値が null に設定されている場合と他の値に設定されている場合の背後で何が起こっているのかを知りたいです。

これがばかげた質問である場合は申し訳ありません!

4

2 に答える 2

4

変数を既存のオブジェクトに設定することと、変数を に設定することの間に大きな違いはありませんnull。どちらの場合も、以前にその変数によって参照されていたオブジェクトは、その変数に格納された新しい値がオブジェクトであるか別のオブジェクトであるかに関係なく、ガベージ コレクションの対象になることに一歩近づきnullます。割り当ての残りの部分も同じように進みます。CLR は参照カウントを維持しないため、割り当てが行われた時点で特別なことを行う必要はありません。

ただし、実行時のnull広範なチェックを回避するために、 の代わりにデフォルト オブジェクトを格納すると有益な場合があります。これにより、コードが簡素化され、実行時の分岐の必要性が減ります。null

于 2013-09-05T03:12:19.670 に答える