Home Csharp对象构建顺序
Post
Cancel

Csharp对象构建顺序

内存初始化顺序

new操作符内部和构造函数是像下面这样交互的。new操作符从内存管理器获取“空白”内存,按如下顺序初始化这块内存。调用构造函数时,将对“空白”内存的引用作为隐式的this参数传给构造函数。构造函数链剩余的部分开始执行,在构造函数之间传递引用。这些构造函数都没有返回类型(行为都像是返回void)。构造函数链上的执行结束后,new操作符返回内存的引用。现在,该引用指向的内存处于完成初始化的形式。

构造某个类型的首个实例时由先到后系统所做的工作:

执行静态变量初始化

  1. 把存放静态变量的空间清零
  2. 执行静态变量的初始化语句(声明时直接初始化)

执行静态构造函数

  1. 执行基类的静态构造函数
  2. 执行本类的静态构造函数

执行实例变量初始化

  1. 把存放实例变量的空间清零
  2. 执行实例变量的初始化语句(声明时直接初始化)

执行实例构造函数

  1. 执行基类的实例构造函数
  2. 执行本类的实例构造函数

执行对象初始化器

  1. 执行对象初始化器,集合初始化程序
This post is licensed under CC BY 4.0 by the author.
Contents