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

请问C#构造函数执行顺序

请问C#构造函数执行顺序

C#
开满天机 2019-10-21 16:12:20
C#构造函数执行顺序在C#中,当你做的时候Class(Type param1, Type param2) : base(param1)是先执行类的构造函数,然后调用超类构造函数还是首先调用基构造函数?
查看完整描述

3 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

命令是:

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

然后从最派生的类开始:

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

    Foo() : this(...)

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

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



查看完整回答
反对 回复 2019-10-22
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

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

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

  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-10-22
  • 3 回答
  • 0 关注
  • 313 浏览

添加回答

举报

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