【Aモデル録 フェーズ1 C#基礎】
〜「同じものを見ている」って、どういうこと?〜
👉 参照とは、「値そのものではなく、“置き場所(アドレス = メモリ上の住所)”を共有すること」。
これがすべてです。
難しく聞こえたら、今日はここだけ覚えてください。
※この記事は「C#基礎“知識”講座の忘備録」の一部です。
超初学者が、AI先生との対話を通して理解した内容を
自分なりの言葉でまとめています。
C#の世界には、大きく2種類あります。
| 種類 | 振る舞い |
|---|---|
| 値型 | コピーされる |
| 参照型 | 同じ実体を指す |
👉 今日やるのは 参照型の話。
社員名簿をコピーして渡す
各自が自分の紙を持つ
書き換えても他人に影響なし
👉 安全・直感的
「社員そのもの」を指すIDカードを渡す
みんな 同じ社員を見ている
誰かが変更すると、全員に影響
👉 強力・危険
ここ、めちゃくちゃ重要です。
SeizoBu a = new SeizoBu("田中");
このとき何が起きているか。
new SeizoBu("田中")
👉 ヒープ領域に、実体が1つ作られる
a
👉 その実体を指しているデータ(アドレス)が入っているだけ
つまり、
👉 aは「製造部」そのものではない
👉 「製造部が置いてある場所を知っている変数」
SeizoBu a = new SeizoBu("田中");
SeizoBu b = a;
この瞬間:
製造部インスタンス:1つ
参照(a, b):2つ
[a]
↓
[ SeizoBu(Name="田中") ]
↑
[b]
👉 a と b は 同じ SeizoBu インスタンスのアドレスを参照している
この、「アドレスを参照している」というのが、ポイント。
「え、コピーしたんじゃないの?」
してません。
これが参照。
b.Name = "佐藤";
Console.WriteLine(a.Name);
結果:
佐藤
👉 aは何もしてないのに変わった
これが、
「参照の危険性」
の正体です。
理由はシンプル。
データが大きい
コピーコストが高い
👉 1つを共有したい
同じ部署
同じ設定
同じ進行状況
👉 「全員が同じデータを見ている」
参照型を扱うということは:
変更が波及する
意図しない副作用が出る
誰が触ったか分からなくなる
だから、
👉 「誰が変更していいか」を設計で縛る
これが次につながります。
ここで、これまでの流れが一本になります。
new
↓
コンストラクタ
↓
安全な初期状態
↓
参照で共有
↓
メソッドで操作
👉 初期状態が壊れてたら、参照地獄
だからコンストラクタが
あんなに「めんどくさい」。
今日はこれで満点です。
クラスのインスタンスは 参照型
変数は「実体」か「実体への参照」のどちらかを持つ
参照を渡すと 同じデータを見る
変更は 全員に影響する
値型(int, bool, struct など)
参照型(class, array, string など)