【Aモデル録 フェーズ1 C#基礎】
そろそろ、C#の「書き方の基本」に、一歩踏み込む段階になりました。
ここで、必要な分だけの解説をします。
なお、「実体 = インスタンス」。
これより先は、少しずつ正式な用語を使っていきます。
まず全体像(結論から)
この「2次的な状態」、
SeizoBu seizoBu1 = new SeizoBu();
seizoBu1.DepartmentName = "製造部1課";
seizoBu1.TargetNumber = 1000;
ここで起きていることは、
👉 「インスタンスを生成して、“中身”を書き換えている」
一段階上がった表現をすると、
👉 「ヒープ領域に生成したインスタンスを、参照経由で編集している」
ヒープとは、
👉 「インスタンスを置いておく保管庫」
ヒープ領域とは、
👉 「PC内に確保された、保管庫の置き場所」
※「PC内」というのは正確ではありませんが、現時点ではPCで開発している前提での表現です。
SeizoBu seizoBu1 = new SeizoBu();
この1行で:
SeizoBuseizoBu1= new SeizoBu()この時点で:
インスタンスは 完成して存在する
フィールドは
👉 型ごとの初期値を持った状態
(string = null、int = 0 など)
つまり、
「実体としての入れ物(インスタンス)はある。でも中身は初期状態」
これが「1次生成」。
「すでにある入れ物の中身を、あとから設定する」
seizoBu1.DepartmentName = "製造部1課";
ここでやっていることは:
👉 既存インスタンスの中のフィールドを書き換えている
会社イメージで言うと:
ここが一番大事です。
seizoBu1.TargetNumber
これは何か?
seizoBu1
👉 インスタンスへの参照
.
👉 「そのインスタンスの中を見に行く」演算子
TargetNumber
👉 そのインスタンスが持っているフィールド
つまり、
「seizoBu1が持っている参照先の、インスタンスの中にある、TargetNumber」
を意味しています。
seizoBu1.TargetNumberは
seizoBu1の“付属変数”
seizoBu1は
👉 SeizoBuインスタンスを指している参照
TargetNumberは
👉 そのインスタンスの中にあるフィールド(情報)フィールドは
👉 インスタンスに属して存在する
正直に言います。
初学者向け教材では
👉 説明が増えすぎる
でも実務では
👉 ここを理解してないと破綻する
だから多くの教材は、
「こう書きます」
「今はそういうものと思ってください」
で流します。
もし、あなたが引っかかっているなら、
👉 「構文」ではなく「意味」を見ているから
です。
これは完全に正しい。
本来はこう書きたい:
SeizoBu seizoBu1 = new SeizoBu("製造部1課", 1000);
これがコンストラクタ。
現段階の解説で、フィールドを後から .TargetNumber = ... で埋めているのは、
この基盤が曖昧だと:
逆に言うと、
👉 ここを今、ちゃんと掘っているのは最強ルート
です。
インスタンスは
👉 new した瞬間に 完成して存在
フィールドは
👉 実体の「情報」のひとつ
変数.フィールド は
👉 参照先の中を操作している
「2次的に見える操作」は
👉 後から中身を設定しているだけ
この視点を持ったまま進めば、
List / メソッド / 例外 / 設計 に
一切の段差が出ません。