代码
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.
我明白,在链式构造函数中,我们首先称之为基类构造函数,然后使我们的方式备份在链中,但是当构造函数保存在同一个类中时,为什么我们仍然看到这种行为,首先调用额外的构造函数?
我会认为最基本的构造函数内容将被执行.
@H_301_26@解决方法 我认为编译器运行更安全的场景.如果您在此处调用另一个构造函数,那么这个其他构造函数有可能是当前构造函数的先决条件.这种行为与调用基础构造函数时暴露的行为一致,然后被预期.
当创建一个类的新实例时,有一个构造函数链从最专业的(对象类的构造函数)调用到最专业的(当前类的构造函数).
运算符:允许你明确地添加一个构造函数到这个链,所以这个顺序似乎是自然的.
@H_301_26@ @H_301_26@ 总结以上是内存溢出为你收集整理的C#:构造函数调用顺序全部内容,希望文章能够帮你解决C#:构造函数调用顺序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)