====== シャローコピーとディープコピー ====== シャローコピー (Shallow Copy) と、ディープコピー (Deep Copy) という言葉を今頃、知りました。仕組みは知っていたけれど・・・ ===== シャローコピー ===== コレクション系クラス(ArryaListなど)をコピーしようとして Dim test1 As New ArrayList Dim test2 As New ArrayList test1.Add("A") test1.Add("B") test2 = test1    'シャローコピー test1.Add("C") test2.Remove("A") とした場合、追加していない test2 にも、"C" が追加され、削除していない test1 では、"A"が削除されます。 これは、参照先を示すアドレスがコピーされるだけ、コピー元もコピー先も結局は同じものを指し示していることを意味します。\\ これを、シャローコピー (Shallow Copy、簡易コピー、浅いコピーなど) と言います。 ===== ディープコピー ===== 逆に、中身そのものをコピーする(参照先のインスタンスをも複製する)場合をディープコピー (Deep Copy、深いコピーなど) と言います。 Dim test1 As New ArrayList Dim test2 As ArrayList = Nothing test1.Add("A") test1.Add("B") test2 = New ArrayList(test1) 'ディープコピー test1.Add("C") test2.Remove("A") とした場合、test1 と test2 は、中身そのものがコピーされるため、それぞれは影響を受けません。test1 のみに"C"が追加され、test2 のみに "A"が削除されます。