広告スペース(バナー)
🔷Visual Basic(.NET) レッスン
基本文法の基礎8
データ構造とオブジェクト指向7
構文の基本を深める9
関数とデータ構造の応用9
アルゴリズムとテストの基礎8
文字列・数値操作の応用8
実務で役立つ機能8
アルゴリズム練習問題10
レッスン 40 / 68

浅いコピーと深いコピーの違い

このレッスンでは、VB.NETにおける浅いコピーと深いコピーの違いを学び、意図しないデータの共有によるバグを防げるようになることを目標にします。「VB.NET 浅いコピー 深いコピー」で調べている方向けです。

クラスのインスタンスを別の変数に代入すると、多くの場合は実体そのものではなく参照(アドレス)がコピーされます。この状態を浅いコピーと呼び、片方を変更するともう片方にも影響が及びます。

サンプルコードでは、Dim shallow As Address = originalによりshalloworiginalと同じインスタンスを指すようになります。そのためshallow.City = "大阪"と変更すると、original.Cityを表示した際にも「大阪」に変わってしまう様子を確認できます。

初心者がよくつまずくのが、コピーしたつもりが実は同じ実体を共有しているだけだったというケースです。独立した別のデータとして扱いたい場合は、新しいインスタンスを作って値を1つずつコピーする「深いコピー」を意識的に行う必要があります。

実際の開発現場では、設定情報のひな形をコピーして個別に編集したい場合など、意図せずデータが共有されてしまう不具合を避けるために、浅いコピーと深いコピーの違いを正しく理解しておくことが重要です。

📖 お手本コード
✍️ あなたのコード
コードを書いたら「実行する」を押してください

🧪 このサイトではVisual Basic(.NET)を直接コンパイル・実行できないため、お手本コードと同じ内容を入力できたかをその場で判定します(採点はブラウザ内だけで行われ、どこにも送信されません)。

🎯
ここまでできればゴール達成!
元のデータを壊さずに、安全に複製できるようになります。
広告スペース(バナー)
広告スペース(記事内)