第4章 类型基础
4.1 所有类型的基类型:System.Object
公有方法:Equals, GetHashCode, ToString, GetType
保护方法:MemberwiseClone, Finalize
CLR要求所有的对象(指引用对象)都要用new操作符来创建,new操作符产生 newobj IL指令,执行过程如下:
1、从托管堆(managed heap)中分配指定类型所需的内存空间
2、初始化对象的两个附加成员(overhead members),一个为指向类型方法表的指针,另一个为SyncBlockIndex字段,CLR中使用该字段来进行线程同步控制,该字段的某些位还用作垃圾收集时的标记,FCL中System.Object类型默认的GetHashCode方法也用到了该字段
3、传入指定的参数,调用类型的实例构造器
4、完成操作后返回一个指向新对象的引用
4.2 类型转换
is操作符用来检查对象是否和给定类型兼容,并返回true或false。as操作符用来判断对象是否兼容,如果兼容则返回一个指向同一个对象的非空指针,不兼容则返回null。因为as操作符同时包含了类型检查和转换的操作,适当的使用as操作符可以减少CLR对类型检查的次数。is和as操作都不会产生异常,使用as操作符时通常需要检查返回的结果是否为null
4.3 命名空间与程序集
using 指示符允许我们为一个类型或命名空间创建别名
C#中命名空间隐含为公有,不能对其使用访问修饰符
多个属于同一命名空间的类型可能被实现在多个程序集中,而一个程序集也可以包含位于不同命名空间中的类型