コンストラクタ

定義

C#にはC++のイニシャライザのような仕組みは存在せず、定義時に初期化します。

class Foo
{
    int a = 1;
    const int b = 1;

    public Foo()
    {
    }
}

多重定義 (オーバーロード)

多重定義したコンストラクタから他のコンストラクタを呼ぶには、thisキーワードを用いてイニシャライザのように記述します。

class Foo
{
    public Foo(            ) : this(0, 0, null) {} // 他のコンストラクタを呼ぶだけ
    public Foo(int x, int y) : this(x, y, null) {} // 他のコンストラクタを呼ぶだけ

    public Foo(int x, int y, string s)
    {
        // コンストラクタの実装
    }
}
10.10.6 省略可能なインスタンス コンストラクタ パラメータ (C#) | MSDN

継承 (Inheritance)

baseキーワードを利用して、派生クラスから基本クラスのメソッドを呼べます。base (C# リファレンス) - desc | MSDN

静的コンストラクタ (static constructor)

  • タイプコンストラクタ
  • クラスコンストラクタ
  • タイプイニシャライザ

とも呼ばれます。

静的コンストラクタにはアクセス修飾子やパラメータはなく、static ClassName()の構文のみです。

class Foo
{
    static readonly int a;

    static Foo()
    {
        a = 1;
    }

    public Foo()
    {
        a = 1; // error CS0198: 静的読み取り専用フィールドへの割り当てはできません (静的コンストラクターまたは変数初期化子では可)。
    }
}
静的コンストラクター (C# プログラミング ガイド) | Microsoft Docs | MSDN

オブジェクトの生成

new演算子

Class1 obj  = new Class1();

匿名型のインスタンスは、次のように生成できます。

var a = from f in foo
    select new {X = f.X};

参考

参考書

MSDN (Microsoft Developer Network) から検索