---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ---------------------- 在C#中,我们用new操作符创建一个对象,但new操作符到底帮我们做了那些事呢? 1、它计算类型及其所有基类(一直到object类)中定义的所有实例字段所需要的字节数。堆上的每个对象都需要一些额外的成员——即“类型对象指针”和“同步块索引”。这些成员是CLR用于管理对象的。这些额外的成员字节数也会算入到对象中。 2、它从托管堆上分配指定类型所要求的字节数,从而分配对象的内存,分配的所有字节都设为0。 3、初始化对象的“类型对象指针”和“同步块索引”这两个成员。 4、调用类型的实例构造函数,向其传入在对new的调用中指定的任何实参(就是构造函数的参数),从而初始化这个类型定义的实例字段, 在其构造函数中,调用其父类的构造函数,最终调用的是Object类的构造函数 可以通过ILDasm.exe来验证第4步: C#源码: using System; namespace Wrox.ProCSharp.Basics { class MyFirstCSharpClass { static void Main(String[] args) { Console.WriteLine("This is not all like Java!"); Console.ReadLine(); return; } } } 将编译后的.exe文件加载到ILDasm.exe ---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ---------------------- |