14.使用构造函数链
2012-10-24 09:11
246 查看
这是C#里的最后一个关于对象构造的原则,是时候复习一下,一个类型在构造时的整个事件顺序了。你须
要同时 明白一个对象 的操作顺序和默认的预置方法的顺序。你构造过程中,你应该努力使所有的成员变量
只精确的初始化一次。最好的完成这个 目标的方法就是尽快的完成变量的初始化 。这是某个类型第一次构
造一个实例时的顺序:
1、静态变量存储位置0 。
2 、静态变量预置方法执行 。
3、基类 的静态构造函数执行 。
4 、静态构造函数执行 。
5、实例变量存储位置0 。
6、实例变量预置方法执行 。
7、恰当 的基类实例构造函数执行 。
8、实例构造函数执行 。
后续的同样类型的实例从第5步开始,因为类 的预置方法只执行一次。同样,第6和第7步是优化了的,它可
以让编译器在构造函数预置方法上移除重复的指令 。
C# 的编译器保证所有的事物在初始化使用同样的方法来生成。至少,你应该保证在你的类型创建时,对象
占用的所有内存是 已经置0 的。对静态成员和实例成员都是一样的。你的 目标就是确保你希望执行的初始化
代码只执行一次。使用预置方法来初始化简单的资源,使用构造函数来初始化一些具有复杂逻辑结构的成
员。同样,为了减少重复尽可能的组织调用其它的构造函数
要同时 明白一个对象 的操作顺序和默认的预置方法的顺序。你构造过程中,你应该努力使所有的成员变量
只精确的初始化一次。最好的完成这个 目标的方法就是尽快的完成变量的初始化 。这是某个类型第一次构
造一个实例时的顺序:
1、静态变量存储位置0 。
2 、静态变量预置方法执行 。
3、基类 的静态构造函数执行 。
4 、静态构造函数执行 。
5、实例变量存储位置0 。
6、实例变量预置方法执行 。
7、恰当 的基类实例构造函数执行 。
8、实例构造函数执行 。
后续的同样类型的实例从第5步开始,因为类 的预置方法只执行一次。同样,第6和第7步是优化了的,它可
以让编译器在构造函数预置方法上移除重复的指令 。
C# 的编译器保证所有的事物在初始化使用同样的方法来生成。至少,你应该保证在你的类型创建时,对象
占用的所有内存是 已经置0 的。对静态成员和实例成员都是一样的。你的 目标就是确保你希望执行的初始化
代码只执行一次。使用预置方法来初始化简单的资源,使用构造函数来初始化一些具有复杂逻辑结构的成
员。同样,为了减少重复尽可能的组织调用其它的构造函数
相关文章推荐
- Effective C# 原则14:使用构造函数链
- Effective C# 原则14:使用构造函数链(译)
- linux >>> 使用U盘安装fedora14
- 使用IntelliJ IDEA 14和Maven创建java web项目
- Spring Boot 学习14--使用Druid(编程注入)
- 安卓控件使用系列14:ImageView的基本使用方法
- idea14使用maven创建web工程
- SQL笔记(14)_第十四章 使用子查询定义未确定数据
- 基于rails的schedule网站开发(14):第一次使用git stash
- 【译】MVC3 20个秘方-(14)使用Ajax 提交 Form表单
- Fedora14 使用root用户登录
- Linux学习笔记14——使用fcntl实现文件锁定
- AD14使用积累
- 懂商业的技术合伙人(14):使用HTML5开发App客户端,HTML5+和MUI框架基本介绍
- ubuntu14 sudo不能使用问题的处理
- Struts2学习笔记(14)-----使用ModelDriven接口直接访问对象属性
- (14)使用查询表达式的LINQ
- iOS 基础篇14- KVO的使用
- 14-ASP.NET 使用FileUpload控件上传图片并自动生成缩略图
- Ubuntu14.04 ssh 使用 http 代理