【初心者向け】C#のコンストラクタ入門:オブジェクト生成時の初期化を理解しよう
プログラミングを始めたばかりの方が、クラスからオブジェクトを作るときによく耳にする「コンストラクタ」。この記事では、難しい用語をできるだけ排し、やさしい例えを交えながら「そもそもコンストラクタって何?」「どう書くの?」「いつ使うの?」をすっきり整理して解説します。
目次
1. コンストラクタとは?
- オブジェクトを生成するときに自動で呼ばれる「初期化メソッド」クラスから new クラス名(…) を実行すると、必ずいちばん最初に呼び出される特別なメソッドです。
 - リアルな例え:料理のレシピコンストラクタは料理を作る工程でいう「材料を切って鍋に入れる」「火をつける」といった下ごしらえ。料理(オブジェクト)が完成した状態で「すぐ使える」ように、必要な準備をまとめて行います。
 
2. コンストラクタの役割
- フィールドやプロパティへの初期値代入
- 例:Name や Age といったデータを、渡された引数でセットする
 
 - オブジェクト生成に必要な処理の実行
- 他のクラスやメソッドを呼ぶ準備、ログ出力、例外チェックなど
 
 - 必ず一度は呼ばれるので安心
- new と同じタイミングで実行されるため、使う側は「生成後は 必ず初期化済み」と考えてOK
 
 
3. C# におけるコンストラクタの書き方
class Sample
{
    // (1) 引数なしコンストラクタ
    public Sample()
    {
        // ここに初期化コードを記述
    }
    // (2) 引数付きコンストラクタ(オーバーロード)
    public Sample(int value, string text)
    {
        // value や text を使ってフィールドに代入
    }
    // ※戻り値の型は書かない。メソッド名はクラス名と同じ。
}
- メソッド名:クラス名と完全に一致
 - 戻り値:書かない(void も不要)
 - アクセス修飾子:多くは public
 - オーバーロード:引数を変えて何パターンでも定義可能
 
4. 動かしてみよう:Personクラスの例
class Person
{
    public string Name;
    public int Age;
    // 引数付きコンストラクタ
    public Person(string name, int age)
    {
        Name = name;
        Age  = age;
    }
}
class Program
{
    static void Main()
    {
        // ① オブジェクト生成と同時に初期化
        var hanako = new Person("花子", 20);
        // ② 初期化結果を確認
        Console.WriteLine($"名前: {hanako.Name}, 年齢: {hanako.Age}");
        // → 名前: 花子, 年齢: 20
    }
}
- new Person(“花子", 20) を実行した瞬間、Person(string, int) が呼ばれて Name と Age が設定される
 
5. デフォルトコンストラクタと自動生成
- クラスにコンストラクタを 一つも 定義しない場合→ 引数なしのコンストラクタが自動で用意される
 - 一つでも コンストラクタを自前で書くと→ 自動生成が無効に。引数なし版が欲しければ自分で書く必要がある
 
class Sample
{
    // 引数付きだけ定義すると…
    public Sample(int x) { /*…*/ }
    // 引数なしを使いたいなら自分で追加
    public Sample() { /*…*/ }
}
6. コンストラクタのオーバーロード活用例
class Point
{
    public int X, Y;
    // (A) デフォルトでは原点
    public Point()
    {
        X = 0; Y = 0;
    }
    // (B) 任意の座標を指定
    public Point(int x, int y)
    {
        X = x; Y = y;
    }
}
// 使い分け
var p1 = new Point();      // (A):原点
var p2 = new Point(5, 10); // (B):X=5, Y=10
- 引数なし版で「基本状態」、引数付きで「個別設定」といった使い分けができる
 
7. まとめとワンポイント
- コンストラクタ は「生成直後に必ず呼ばれる初期化コード」
 - 定義ルール:
- メソッド名=クラス名
 - 戻り値なし
 - アクセス修飾子は通常 public
 
 - デフォルト自動生成 の有無に注意
 - オーバーロード で複数パターンの初期化を実現
 - 実際のプロジェクトでは、必要最低限の初期値設定をコンストラクタ内にまとめることで、安全・楽ちんにオブジェクト管理ができます
 
訪問数 100 回, 今日の訪問数 3回






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