【図で理解】値型と参照型のメモリ構造
まずはこの図を見てください。

今日はこのイラストを使って、
- なぜ値型は独立するのか
- なぜ参照型は連動するのか
- なぜUnityで混乱が起きるのか
を、直感レベルで整理します。
目次
■ 左側:値型(Value Type)
図の左側を見てください。
a = 10
b = a
b に a を代入したとき、
コピーされるのは「10という値そのもの」です。
つまりメモリの中ではこうなっています。
a → 10
b → 10(別の場所)
だから、
int a = 10;
int b = a;
b = 20;
としても、
a は 10 のままです。
なぜなら、
完全に別物だから。
値型の特徴
- データそのものを持つ
- コピーすると中身もコピーされる
- 軽量(int は4バイト)
代表例:
- int
- double
- bool
- struct
■ 右側:参照型(Reference Type)
右側を見てください。
s1 → 0x1234
s2 → 0x1234
ここでコピーされているのは
「中身」ではなく
「住所(参照)」です。
つまり、
Studentオブジェクト(実体)
↑
s1 と s2 が指している
同じ実体を共有しています。
コードで確認
Student s1 = new Student();
s1.Name = "山田";
Student s2 = s1;
s2.Name = "佐藤";
Console.WriteLine(s1.Name);
class Student
{
public string Name;
}
結果は?
佐藤
なぜ?
同じオブジェクトを指しているから。
■ なぜ設計が違うのか?
ここが重要です。
値型は小さい
int は 4バイト。
コピーしても軽い。
参照型は大きくなる可能性がある
class の中に:
- 配列
- 他のクラス
- 大量のデータ
が入る可能性があります。
もし毎回コピーしていたら:
- メモリが爆発
- 処理速度が低下
だから、
「住所だけコピーする設計」
になっています。
■ まとめ(この図の本質)
値型:
「中身をコピー」
参照型:
「住所をコピー」
この違いを理解すると、
- オブジェクト指向が整理される
- Unityで混乱しない
- バグの原因が見抜ける
■ 確認問題
- int はどちら?
- class はどちら?
- 配列は?
- string は?
訪問数 22 回, 今日の訪問数 22回



ディスカッション
コメント一覧
まだ、コメントがありません