C#中两个类之间有继承关系时的执行顺序~
2009-01-22 16:52
309 查看
当两个类之间有继承关系时,第一次构造子类的实例时,是按照如下顺序进行的:
子类的静态成员初始化语句
子类的静态构造函数
子类的非静态成员初始化语句
父类的静态成员初始化语句
父类的静态构造函数
父类的非静态成员初始化语句
父类的构造函数
子类的构造函数
为什么会这样呢?
事实上,出现上述顺序的原因是,在执行完子类的静态构造函数后(也就是第四步),程序会接着执行子类的构造函数,但是,此时,程序会先自动访问该构造函数继承的父类的构造函数(如果没有显式继承,那么就默认继承父类的默认构造函数,如果父类没有默认构造函数,那么会出现编译错误),而且,由于是第一次访问父类,因此会先运行静态成员初始化的代码和静态构造函数。
子类的静态成员初始化语句
子类的静态构造函数
子类的非静态成员初始化语句
父类的静态成员初始化语句
父类的静态构造函数
父类的非静态成员初始化语句
父类的构造函数
子类的构造函数
为什么会这样呢?
事实上,出现上述顺序的原因是,在执行完子类的静态构造函数后(也就是第四步),程序会接着执行子类的构造函数,但是,此时,程序会先自动访问该构造函数继承的父类的构造函数(如果没有显式继承,那么就默认继承父类的默认构造函数,如果父类没有默认构造函数,那么会出现编译错误),而且,由于是第一次访问父类,因此会先运行静态成员初始化的代码和静态构造函数。
相关文章推荐
- C#中两个类之间有继承关系时的执行顺序~
- 包含继承关系的Java程序执行顺序(代码实例)
- web.cofig和Global.asax之间的关系以及执行的顺序
- 两个Activity之间跳转时,生命周期的执行顺序
- 关于Java中由继承关系的类对象的内容的执行顺序
- JAVA继承关系中静态代码块、非静态代码块的执行顺序
- 浅谈静态字段与静态构造函数之间的初始化关系以及执行顺序
- 拨云见日---浅谈静态字段与静态构造函数之间的初始化关系以及执行顺序(下)
- 验证当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。
- 两个Activity之间跳转时,它们生命周期的执行顺序
- Java继承之间类的加载顺序, 以及代码块、构造块的执行顺序
- java 继承关系中-执行顺序测试
- 当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。
- 两个Activity之间跳转时,生命周期的执行顺序
- C#继承中构造函数,成员变量的执行顺序
- 在C#中,有6个关系运算符,用于比较两个事物之间的关系
- java继承关系中静态代码块、非静态代码块的执行顺序
- C#两个集合之间数据的关系--Contains
- C#中,接口继承、基类继承中父类与基类的执行顺序
- 浅谈静态字段与静态构造函数之间的初始化关系以及执行顺序