次のコードを検討してください。
コード
public class RecursiveConstructor
{
//When this constructor is called
public RecursiveConstructor():this(One(), Two())
{
Console.WriteLine("Constructor one. Basic.");
}
public RecursiveConstructor(int i, int j)
{
Console.WriteLine("Constructor two.");
Console.WriteLine("Total = " + (i+j));
}
public static int One()
{
return 1;
}
public static int Two()
{
return 2;
}
}
呼び出し方法
public class RecursiveConstructorTest
{
public static void Main()
{
RecursiveConstructor recursiveConstructor = new RecursiveConstructor();
Console.ReadKey();
}
}
結果
コンストラクター 2。
合計 = 3
コンストラクター 1。基本。
2番目のコンストラクターが最初に実行されるのはなぜですか?
チェーンされたコンストラクターでは、最初に基本クラスのコンストラクターを呼び出してから、チェーンを元に戻すことを理解していますが、コンストラクターが同じクラスに保持されている場合、追加のコンストラクターが最初に呼び出されるこの動作がまだ見られるのはなぜですか?
最も基本的なコンストラクターの内容が最初に実行されると思っていたでしょう。