デフォルトコンストラクタは必要?

クラスを学んでくるとコンストラクタの仕組みで出てきますよね
コンストラクタとは、クラスからインスタンスを作成した時に最初に実行されるブロックになります
ここにフィールドやプロパティの初期化や初期処理を記述します

初期化したいことがない場合でもC#的にはコンストラクタが必要なので内部で代わりに作ってくれます

コンストラクタを省略した場合

MyClass myClass = new MyClass();

class MyClass
{

}

これは内部的には次のようなコードが追加されます

MyClass myClass = new MyClass();

class MyClass
{
    public MyClass()
    {
    }
}

引数つきコンストラクタを作成している場合

こう書きたいのですがエラーになります

MyClass myClass = new MyClass();

class MyClass
{
    public int hp;

    public MyClass(int hp)
    {
        this.hp = hp;
    }
}

エラー内容

引数つきのコンストラクタを追加すると内部的なコンストラクタは作成されません
なので、次のようにすることが必要です

MyClass myClass = new MyClass();

class MyClass
{
    public int hp;

    public MyClass()
    {
    }

    public MyClass(int hp)
    {
        this.hp = hp;
    }
}

C#

Posted by hidepon