[C#] コンストラクター

classとstructをnewしたときinstanceを作るのはconstructor。
construtorは、classやstructと同じ名前のmethodでreturn valueは持たない。
classのconstructorはパラメタあり、なし両方作って良いが、パラメタありのconstructorを作るとパラメタなしは自分で作らなければならなくなる。ただし、作らなくてもかまわない。
structではパラメタなしのconstructorは自前で作ることはできない。
いくつかのconstructorを重複させないために、他のconstructorで初期化できる。(constructor initializer)

public Date() : this(1, 1, 1)
{
}
public Date(int year, int month, int day)
{
//  parameterを使って処理
}

this(…)は、同じclassのconstructor呼ぶ。その後に自分の中の処理を実行。
同じように親クラスのconstructorを呼ぶのはbaseを使う。
Dateを親クラスとするExtendedDateでDateのconstructorを使うには

class ExtendedDate : Date
{
.....
public ExtendedDate() : base(1, 1, 1)
{
}
...
}

classは、さかのぼって親クラスをたどって行くと、大元はSystem.Object。
constructorは親から子クラスの順番で呼ばれる。大元がSystem.Objectだから、Objectクラスのconstructorから順番に自身のconstructorまで呼ばれる。このとき順番に呼ばれるのは、指定がされなければパラメタなしのconstructor。
constructorの順番を中断することはできない。

広告
%d人のブロガーが「いいね」をつけました。