C#:构造函数调用顺序

C#:构造函数调用顺序,第1张

概述请考虑以下代码: 代码 public class RecursiveConstructor{ //When this constructor is called public RecursiveConstructor():this(One(), Two()) { Console.WriteLine("Constructor one. Basic."); } 请考虑以下代码:

代码

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#:构造函数调用顺序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1263867.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存