【Aモデル録 フェーズ1 C#基礎】

05-04:コンストラクタ(Constructor)

一言で言うと

👉 コンストラクタとは、「インスタンスが生成された直後に、最初に1回だけ必ず実行される処理」 です。

Aモデル的に言うと

👉 「実体の存在が成立するための、最低ルールを整える場所」

コンストラクタの基本形

種類 宣言書式 例 命名規則 覚え方
コンストラクタ アクセス修飾子 クラス名(引数…) public User(string name) PascalCase 係は部と同じ名前

コンストラクタのルール(最低限)

今はこれだけ覚えておきましょう。


会社イメージでの位置づけ

これまでの対応関係を整理します。

プログラム 会社イメージ
クラス 部署(製造部など)の定義
インスタンス 部署の”実体”
フィールド 部署が持つ情報(名前・IDなど)
メソッド 仕事のマニュアル
コンストラクタ 配属時の初期設定

👉 コンストラクタとは、「社員が配属された瞬間に、必ず行われる初期手続き」 です。


なぜコンストラクタが必要なのか

もしコンストラクタがなかったら…

👉 「存在はしているが、使い物にならない社員」 が生まれる。

だから、

「インスタンスが作られた瞬間に、最低限の初期状態を保証する」

ために、コンストラクタがある。


最小コード(会社イメージ)

class SeizoBu
{
    public string Name;	//これはフィールド

    // コンストラクタ
    public SeizoBu(string name)
    {
        Name = name;
    }
}

インスタンスを生成した時、何が起きるか(超重要)

上の最小コードが整った後、Mainでインスタンスを生成します。

SeizoBu a = new SeizoBu("田中");

この1行で、

  1. 製造部インスタンスが立ち上がり

  2. その製造部に、社員が新規で配置されることを受けて

  3. 同時にコンストラクタが自動実行され

  4. Name に「田中」が登録される

👉 メソッドのような呼び出しは不要で、自動で処理が実行される
これがコンストラクタ最大の特徴。

混乱ポイント 「Name」と「name」があちこちにあるのは?

ポイントだけ抜き出して並べると

👉「Name」と「name」は理由があるので、個別に存在している

ということが、よく分かります。

1. 「Name」は、フィールドに情報を保存するための変数

public string Name;	//フィールドで「Name」を定義
Name = name;	//コンストラクタ内で関連付け

👉コンストラクタ内で関連付けをするのがポイント

2. 「name」は、コンストラクタがインスタンスから受け取る変数

SeizoBu(string name)	//コンストラクタ「ここでnameを受け取る」と明示する
SeizoBu("田中")	//インスタンス生成時「nameは、田中」だと指令を出す

👉( )内の、「string name」と、「田中」は対応している


コンストラクタの定義が、とにかくめんどくさい件

👉 それは「順序と責任」が見え始めた証拠です。

これまでの回は、

という世界でした。

でもコンストラクタは、

という、一段上のルールを強制してきます。

コンストラクタは、未来の自分を助けるための面倒くささ

全部、後工程の安心材料です。

今はムカつく。
でも後で、

「あ、これコンストラクタで決めてたわ…助かった…」

って、必ず言います。


フィールドとの関係(整理)

インスタンス生成
   ↓
コンストラクタ実行(初期化)
   ↓
フィールドが安全な状態になる
   ↓
メソッドが安心して使える

👉 順番が超大事


今はここまででOK

この段階では:

これが分かれば十分です。


次は自然に、

という疑問が出てきます。

それを解消するのが、「参照」です。


構成と読み方|タイトル一覧

Top - はじめに|この忘備録と「Aモデル」について