【发布时间】:2012-08-22 18:18:48
【问题描述】:
考虑以下代码:
代码
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();
}
}
结果
构造函数二。
总计 = 3
构造函数一。基本。
为什么第二个构造函数首先运行?
我知道在链式构造函数中,我们首先调用基类构造函数,然后返回链,但是当构造函数保存在同一个类中时,为什么我们仍然会看到首先调用额外构造函数的这种行为?
本来以为会先执行最基本的构造函数内容。
【问题讨论】:
-
顺便说一下,这不是递归的。
-
我认为这仍然是构造函数链接。
-
谢谢。认为它是递归构造函数是我的错误。我已批准对标题的编辑。所以我们在这里看到的本质上是构造函数链接,但在同一个类中,而不是跨继承和基类?
-
我并不完全清楚你在问什么 - “为什么第二个构造函数首先运行?” - 因为您要求第二个先运行!如果你想要不同的行为,你需要编写不同的代码。
标签: c# constructor