C#:构造函数调用顺序
发布时间:2020-12-15 04:35:40 所属栏目:百科 来源:网络整理
导读:请考虑以下代码: 代码 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
请考虑以下代码:
代码 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(); } } 结果
为什么第二个构造函数首先运行? 我明白,在链式构造函数中,我们首先称之为基类构造函数,然后使我们的方式备份在链中,但是当构造函数保存在同一个类中时,为什么我们仍然看到这种行为,首先调用额外的构造函数? 我会认为最基本的构造函数内容将被执行. 解决方法
我认为编译器运行更安全的场景.
如果您在此处调用另一个构造函数,那么这个其他构造函数有可能是当前构造函数的先决条件.这种行为与调用基础构造函数时暴露的行为一致,然后被预期. 当创建一个类的新实例时,有一个构造函数链从最专业的(对象类的构造函数)调用到最专业的(当前类的构造函数). 运算符:允许你明确地添加一个构造函数到这个链,所以这个顺序似乎是自然的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |