代码改变世界

一线开发读CLR --- 第四章:类型基础

2013-03-23 13:18  秋日愚夫  阅读(164)  评论(0编辑  收藏  举报

>类型都是从System.Object派生  (大道至简)

任何一个类型,都是Object类的N级子类。
Object的“类型对象指针”是指向自身的,也就宣告了此处是构造器链的终点。
每一次用New去调用构造器初始化对象时,Object构造器都会在构造器链顶端被第一个执行。最终才会调用发起New操作的类型的构造器。
 

>类型转换  简单的事,可以转换成复杂的。复杂的事也可以转成简单的。但复杂的不能转成复杂的。所以大道至简。)

Object有个GetType公共方法。也就是说任何一个对象都是可以获得确切类型的。这就是所谓的“强类型”吧。
在C#中用is 和as进行类型转换
is构成的表达式会返回一个布尔值结果。as要么返回转换后的结果,要么返回null。
 

>命名空间和程序集  (你很穷?不重要!你要知道自己是一个什么样的人! )

类的逻辑位置和物理位置。
就好像,你的命名空间是“企业家”,但你现在却在“程序员”这个程序集中。只有通过你自己的一步步重构,慢慢把自己向目标的程序集中移。
 

>从一个方法的执行流程,看运行时的相互关系  (做事情,要分流程。什么环节先办?什么是核心环节?都要搞清)

当前环境 进程已启动,CLR已加载,托管堆已初始化,线程及1M线程栈已创建。
1,JIT在将LI转成本地代码过程中,会把当前方法中所有涉及的类型对象,加载至进程堆。
2,执行本地代码。
     本地代码的执行过程,是建立一个开口向下的栈,然后把操作参数压入栈,最后把返回地址压入。从第一个入口方法开始,对方法的处理都是这样的一个过程。