最初のものは基本コンストラクターにパラメーターを渡しますが、2 つ目はデフォルト (パラメーターなしのコンストラクター) を使用します。
public class Human
{
public string Name { get; set; }
public Human()
{
Name = "No name";
}
public Human(string name)
{
Name = name + " Jr.";
}
}
public class Male : Human
{
public Male() {}
public Male(string name) : base(name) {}
}
public class Female : Human
{
public Female() { Name = "Girl"; }
}
var unnamedHuman = new Human();
//unnamedHuman.Name == "No name"
var namedHuman = new Human("Jon");
//namedHuman.Name == "Jon"
var unnamedMale = new Male();
// unnamedMale.Name == "No name"
var namedMale = new Male("Chris");
// namedMale.Name == "Chris Jr";
var unnamedFemale = new Female()
// unnamedFemale.Name == "Girl"
ロジック: 子クラスを (ctor を呼び出して) 初期化すると、最初にその基本クラスのコンストラクターが順番に呼び出され (トップダウン)、最後のコンストラクターは、呼び出した子クラスのコンストラクターになります。既定では、既定のパラメーターなしのコンストラクターが使用されますが、 を使用して、引数を指定して基本コンストラクターに渡すことができますbase(parameter1, p2)
。