码迷,mamicode.com
首页 > Windows程序 > 详细

读经典——《CLR via C#》(Jeffrey Richter著) 笔记_new新建对象

时间:2015-04-26 22:36:23      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

CLR使用 new 操作符来创建新对象,例如:Employee e=new Employee("Param1");  以下是 new  操作符所做的事情。

  1.  它计算类型及其所有基类型(一直到 System.Object,虽然它没有定义自己的实例字段)中定义的所有实例字段需要的字节数。堆上的每个对象都需要一些额外的成员——即“类型对象指针”(type object pointer)和“同步块索引”(sync block index)。这些成员由CLR用于管理对象。这些额外成员的字节数会计入对象大小。

  2. 它从托管堆中分配指定类型要求的字节数,从而分配对象的内存,分配的所有字节都设为零(0)。

  3. 它初始化对象的“类型对象指针”和“同步块索引“成员。

  4. 调用类型的实例构造器,想起传入在对new的调用中指定的任何实参(上例就是字符串Param1")。大多数编译器都在构造器中自动生成代码来调用一个基类构造器。每个类型的构造器在调用时,都要负责初始化由这个类型定义的实例字段。最终调用的是System.Object的构造器,该构造器只是简单地返回,不会做其他任何事情。为了证明这一点,可使用ILDasm.exe加载MSCorLib.dll,自己检查System.Object的构造器方法。

new 执行完所有这些操作之后,会返回指向新建对象一个引用(或指针)。在前面的示例代码中,这个引用会保存到变量 e 中,后者具有 Employee 类型。

读经典——《CLR via C#》(Jeffrey Richter著) 笔记_new新建对象

标签:

原文地址:http://www.cnblogs.com/lishidefengchen/p/4458450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!