美文网首页
『C#』 对象成员初始化顺序

『C#』 对象成员初始化顺序

作者: ToBinary | 来源:发表于2019-04-05 22:34 被阅读0次

本文转载并修改自 : CSDN 小K的大师兄

成员初始化整体顺序

  • 成员赋值初始化先于构造函数
  • 成员赋值初始化先从派生类再到基类
  • 构造函数初始化先从基类再到派生类
  • 静态成员初始化优先于实例成员初始化;

对类型静态成员构造的大致过程

  1. 分配静态成员的内存空间,此时空间存储数据为 default(Type)
  2. 执行类的静态成员的初始化语句;
  3. 执行类的静态构造函数

对类型实例成员构造的大致过程

  1. 分配实例成员的内存空间,此时空间存储数据为 default(Type)
  2. 执行派生类实例成员初始化语句
  3. 执行基类实例化成员初始化语句
  4. 执行基类构造函数
  5. 执行派生类构造函数

同时有静态成员和实例成员的大致构造过程

  1. 执行派生类静态成员初始化语句
  2. 执行派生类静态构造函数
  3. 执行派生类实例成员初始化语句
  4. 执行基类静态成员初始化语句
  5. 执行基类静态构造函数
  6. 执行基类实例成员初始化语句
  7. 执行基类实例构造函数
  8. 执行派生类实例构造函数

  • C#中静态构造函数都是私有的,不能为其添加访问修饰符;
  • 只有创建类的实例调用任何静态成员时才能激发静态构造函数;
  • 调用一个未初始化类静态成员时,他会先去初始化这个类的静态成员静态构造函数

---END---

相关文章

  • 『C#』 对象成员初始化顺序

    本文转载并修改自 : CSDN 小K的大师兄 成员初始化整体顺序 成员赋值初始化先于构造函数; 成员赋值初始化先从...

  • 初始化

    成员方法的初始化 在类的内部,变量的定义顺序决定了初始化的顺序。创建一个对象时,会先初始化对象中的成员变量,然后才...

  • [转]Effective C++学习笔记:初始化列表中成员列出的

    类成员的默认初始化顺序是按照声明顺序进行, 如果使用初始化列表初始化成员变量, 则必须按照成员变量的声明顺序进行;...

  • 创建对象时调用顺序

    创建对象时调用顺序如下: ①先初始化父类和子类的静态成员。 ②父类非静态成员。 ③父类构造方法。 ④子类非静态成员...

  • C#构造函数中this和base的使用

    C#构造函数中this和base的使用 结论 构造函数的作用是,给对象成员进行初始化。 然后,构造函数this和b...

  • java初始化顺序

    存在继承关系时 父类static块和静态成员变量,按顺序初始化 子类static块和静态成员变量,按顺序初始化 父...

  • 2020-02-01Java程序的初始化顺序

    初始化顺序: 对于一个单独的类而言:静态部分(静态成员变量 + 静态代码块):按照定义顺序进行初始化普通成员(普通...

  • 成员初始化顺序

    动态按其在类中的顺序初始化 静态变量优于非静态变量初始化,在第一次被类引用或其属类第一次建立对象时被初始化

  • C++ 哪几种情况必须用到初始化成员列表

    类的成员是常量成员初始化; 类的成员是对象成员初始化,而该对象没有无参构造函数; 类的成员为引用时。

  • 静态代码块、静态变量、成员变量等加载顺序详解

    静态代码块、静态变量、成员变量等加载顺序详解 1 单个类的初始化顺序 一个类 无论创建多少对象,静态数据只占用一份...

网友评论

      本文标题:『C#』 对象成员初始化顺序

      本文链接:https://www.haomeiwen.com/subject/xyxliqtx.html