本文へスキップ
BecomeCoder

C#オブジェクト指向コース · 第1章 オブジェクト指向 · レッスン3

コンストラクタ

ブラウザで完結

導入

newオブジェクトを作るとき、最初に必要な値を渡して初期化したいことがあります。そのための特別なメソッドがコンストラクタです。

図解

flowchart LR
    N["new Person(&quot;Taro&quot;, 20)"] --> CT["コンストラクタ<br/>Person(name, age)"]
    CT --> INIT["Name=Taro / Age=20<br/>で初期化された実体"]

サンプル

// new のときに初期値を渡す
var person = new Person("Taro", 20);
person.Introduce();   // 私はTaro、20歳です

class Person
{
    public string Name { get; }
    public int Age { get; }

    // コンストラクタ: クラス名と同じ名前のメソッド。new のとき呼ばれる
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }

    public void Introduce()
    {
        Console.WriteLine($"私は{Name}{Age}歳です");
    }
}
  • コンストラクタはクラス名と同じ名前のメソッド、戻り値の型は書かない
  • new クラス名(引数)で呼ばれ、オブジェクトの初期値を設定する
  • 必須の値をコンストラクタで受け取れば「未初期化のオブジェクト」を防げる

演習

var book = new Book("C#入門", 2400);
book.Show();   // 「C#入門」は2400円

// TODO: タイトルと価格をコンストラクタで受け取る Book クラスを定義し、
//       Show() で "「タイトル」は価格円" と出力してください
___
  • 期待される出力: 「C#入門」は2400円
ヒント1を見る

コンストラクタpublic Book(string title, int price)でプロパティに代入します

ヒント2を見る

class Book { public string Title { get; } public int Price { get; } public Book(string title, int price) { Title = title; Price = price; } public void Show() { Console.WriteLine($"「{Title}」は{Price}円"); } }

まとめ

  • コンストラクタはクラス名と同名の初期化用メソッド
  • newのときに呼ばれ、必要な初期値を受け取る
  • 必須値をコンストラクタで要求すると未初期化を防げる

次回: オブジェクト自身を指す「this」とメソッドです。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。