一尘不染

C#构造函数执行顺序

c#

在C#中,当您执行

Class(Type param1, Type param2) : base(param1)

是先执行该类的构造函数,然后再调用超类构造函数,还是先调用该基本构造函数?


阅读 452

收藏
2020-05-19

共1个答案

一尘不染

顺序是:

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

然后从最派生的类开始:

  • 变量初始化器针对派生最多的类型执行
  • 构造函数链可以确定将调用哪个基类构造函数
  • 基类被初始化(递归所有这些:)
  • 此类中链中的构造函数体被执行(请注意,如果将它们与Foo() : this(...)等链在一起,则可以有多个

请注意,在Java中,基类 运行变量初始化程序 之前 被初始化。如果您移植了任何代码,这是需要了解的重要区别:)

如果您有兴趣,我会在页面上提供更多详细信息

2020-05-19