摘要:
类的实例构造器 构造器是将类型的实例化为良好状态的特殊方法。 创建引用类型的实例 首先会为实例的数据字段分配内存。 然后初始化对象的附加字段(类型对象指针和同步块索引)。 最后调用类型的实例构造器来设置对象的初始状态。 构造器初始化字段为0或null 构造引用类型的对象时,在调用类型的实例构造器之前 阅读全文
摘要:
CLR调用方法 方法代表在类型或类型的实例上执行某些操作的代码。 在类型上执行操作,称为静态方法;在类型的实例上执行操作,称为非静态方法。所有方法都有名称、签名和返回类型。 在判断方法的唯一性时,除了方法名之外都只以参数为准,方法返回类型会被忽略。 不过C#在定义转换操作符方法时实际放宽了这个操作。 阅读全文
摘要:
类型的各种成员 类型的成员有:常量、字段、实例构造器、类型构造器、方法、操作符重载、转换操作符、属性、事件、类型 以下C#代码展示了一个类型定义,其中包含所有可能的成员。 类型的可见性 定义文件范围的类型时,可将类型的可见性指定为public或internal。 public类型不仅对定义程序集中的 阅读全文
摘要:
基元类型与FCL类型 编译器直接支持的数据类型称为基元类型。基元类型直接映射到Framework类库(FCL)中存在的类型。例如C#的int直接映射到System.Int32类型。 从另一个角度,可以认为C#编译器自动假定所有源代码文件都添加了以下using指令 基元类型相互转换 虽然int和flo 阅读全文
摘要:
运行时的相互关系 首先从一些计算机基础知识开始。 创建线程栈 加载CLR的一个Windows进程,进程中可能有多个线程。线程创建时会分到1MB的栈。 栈空间用于向方法传递实参,方法内部定义的局部变量也在栈上。栈从高位内存地址向地位地址构建。 图中线程已执行了一些代码,栈上已经有一些数据了,现在假定线 阅读全文
摘要:
一、所有类型都从System.Object派生 运行时要求每个类型最终都从System.Object类型派生,也就是说,以下两个类型定义完全一样 System.Object类提供了如下所示的公共实例方法,所以每个类型的每个对象都保证了一组最基本的方法。 二、实例化对象时new操作符所做的事情 ①计算 阅读全文