gpt4 book ai didi

C#:构造函数调用的顺序

转载 作者:太空狗 更新时间:2023-10-29 17:45:01 25 4
gpt4 key购买 nike

考虑以下代码:

代码

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();
}
}

结果

Constructor two.

Total = 3

Constructor one. Basic.

为什么第二个构造函数先运行?

我知道在链式构造函数中,我们首先调用基类构造函数,然后返回链中,但是当构造函数保存在同一个类中时,为什么我们仍然看到这种首先调用额外构造函数的行为?

本来以为最基本的构造器内容会先执行

最佳答案

我认为编译器运行的场景更安全。如果您在此处调用另一个构造函数,则该构造函数可能是您当前构造函数的先决条件。此行为与调用基本构造函数时暴露的行为一致,因此是可以预期的。

当创建类的新实例时,会调用从最不专业(对象类的构造函数)到最专业(当前类的构造函数)的构造函数链。

运算符 : 允许您显式添加一个构造函数到这个链中,所以这个顺序看起来很自然。

关于C#:构造函数调用的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12155906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com