2008/12/11(Thu) 00:34:07 編集(投稿者)
int[] abc = new int[3] { 0, 1, 2 };
private void xyz() {
int[] def = new int[3] { 6, 7, 8 }; // [1]
abc = def; // [2]
} // [3]
[1] def が { 6, 7, 8 } を掴む。
[2] abc が (defが掴んでいる) { 6, 7, 8 } を掴む。
このとき abc は掴んでいた { 0, 1, 2 } を手放す(ので廃棄対象となる)。
[3] メソッドを抜ける際に def がいなくなるので { 6, 7, 8 } を掴んでいた
奴が二人(abc,def)から一人(abc)に減る。
掴んでる奴が一人でもいる限り、捨てられることはない。
なので { 6, 7, 8 } はabc が手放すまでは無問題。