広告スペース(バナー)
🔷Visual Basic(.NET) レッスン
基本文法の基礎8▾
データ構造とオブジェクト指向7▾
構文の基本を深める9▾
関数とデータ構造の応用9▾
アルゴリズムとテストの基礎8▾
文字列・数値操作の応用8▾
実務で役立つ機能8▾
レッスン 40 / 68
浅いコピーと深いコピーの違い
このレッスンでは、VB.NETにおける浅いコピーと深いコピーの違いを学び、意図しないデータの共有によるバグを防げるようになることを目標にします。「VB.NET 浅いコピー 深いコピー」で調べている方向けです。
クラスのインスタンスを別の変数に代入すると、多くの場合は実体そのものではなく参照(アドレス)がコピーされます。この状態を浅いコピーと呼び、片方を変更するともう片方にも影響が及びます。
サンプルコードでは、Dim shallow As Address = originalによりshallowはoriginalと同じインスタンスを指すようになります。そのためshallow.City = "大阪"と変更すると、original.Cityを表示した際にも「大阪」に変わってしまう様子を確認できます。
初心者がよくつまずくのが、コピーしたつもりが実は同じ実体を共有しているだけだったというケースです。独立した別のデータとして扱いたい場合は、新しいインスタンスを作って値を1つずつコピーする「深いコピー」を意識的に行う必要があります。
実際の開発現場では、設定情報のひな形をコピーして個別に編集したい場合など、意図せずデータが共有されてしまう不具合を避けるために、浅いコピーと深いコピーの違いを正しく理解しておくことが重要です。
📖 お手本コード
✍️ あなたのコード
コードを書いたら「実行する」を押してください
🧪 このサイトではVisual Basic(.NET)を直接コンパイル・実行できないため、お手本コードと同じ内容を入力できたかをその場で判定します(採点はブラウザ内だけで行われ、どこにも送信されません)。
🎯
ここまでできればゴール達成!
元のデータを壊さずに、安全に複製できるようになります。
元のデータを壊さずに、安全に複製できるようになります。
広告スペース(バナー)
広告スペース(記事内)