>>811
状況による。
delete は変数名を undefined 状態に戻す。
invalidate は代入されてるオブジェクトの無効化フラグを立てる。
(GCにコレ消しても大丈夫よって教えるのね)

23:03:13 コンソール : tf.dic = new Dictionary(); = (object)(object 0x01F04F98:0x01F04F98)

23:03:24 コンソール : tf.dic.layers = new Array(); = (object)(object 0x01F0EF50:0x01F0EF50)

23:03:48 コンソール : tf.layers = tf.dic.layers; = (object)(object 0x01F0EF50:0x01F0EF50)


だから delete の場合、参照が他所に残ってたらオブジェクトも残る。

23:04:00 コンソール : delete tf.dic; = (int)1
23:04:06 コンソール : tf.dic = (void)

23:04:09 コンソール : tf.layers = (object)(object 0x01F0EF50:0x01F0EF50)

invalidate の場合でも、根元の辞書配列型が無効化されるだけなので要素オブジェクトは健在。
( tf.dic.layers 経由のアクセスが不可能になるだけ )

23:07:41 コンソール : invalidate tf.dic; = (int)1

23:07:49 コンソール : tf.dic = (object)(object 0x01F23008:0x01F23008)

23:07:58 コンソール : tf.dic.layers = (例外発生)オブジェクトはすでに無効化されています

23:08:09 コンソール : tf.layers = (object)(object 0x01F23608:0x01F23608)