为了账号安全,请及时绑定邮箱和手机立即绑定

C#构造函数执行顺序

C#构造函数执行顺序

红颜莎娜 2019-07-15 15:55:36
C#构造函数执行顺序在C#中,当你做的时候Class(Type param1, Type param2) : base(param1)是先执行类的构造函数,然后调用超类构造函数还是首先调用基构造函数?
查看完整描述

3 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

命令是:

  • 成员变量被初始化为层次结构中所有类的默认值。

然后从最派生的类开始:

  • 变量初始化器是针对派生最多的类型执行的。
  • 构造函数链计算出将调用哪个基类构造函数。
  • 基类被初始化(递归所有这些:)
  • 该类中链中的构造函数体被执行(请注意,如果它们被链接在一起,则可以有多个构造函数体)。

    Foo() : this(...)

注意,在Java中,基类是初始化的以前运行变量初始化器。如果您曾经移植过任何代码,这是一个需要了解的重要区别:)

我有一个包含更多详细信息的页面如果你感兴趣的话。


查看完整回答
反对 回复 2019-07-15
?
长风秋雁

TA贡献1757条经验 获得超7个赞

您是在问何时执行构造函数调用的“基本”位吗?

如果是这样的话,如果类派生自具有此构造函数的另一个类,则将“连锁”一个对构造函数基的调用:

  public class CollisionBase
    {
        public CollisionBase(Body body, GameObject entity)
        {

        }
    }

    public class TerrainCollision : CollisionBase
    {
        public TerrainCollision(Body body, GameObject entity)
            : base(body, entity)
        {

        }
    }

在这个例子中,TerrainCollision源自CollisionBase..通过以这种方式链接构造函数,可以确保在基类上使用提供的参数调用指定的构造函数,而不是默认构造函数(如果基类上有构造函数的话)。


查看完整回答
反对 回复 2019-07-15
  • 3 回答
  • 0 关注
  • 954 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信