摘要:
问:当我们new一个对象时,会发生什么事?答:调用该类型的构造函数。问题看似简单,不过事实上,CLR做的比这要多。。。要准确回答这个问题,还要分情况来说。new一个引用类型首先,要实例化一个引用类型,就一定需要在堆上分配内存。要分配内存,就需要先计算出这个引用类型占多大空间,需要给它分配多少内存。那怎么计算呢?简单!只要计算该类型所有字段的长度总和就可以啦。我们知道,引用类型的字段,占一个指针的长度(32位机器上是4个字节,64位机器上是8个字节)。值类型的字段长度可以通过递归的方法计算得出(递归终点是遇到引用类型或基本类型)。根据这些信息,我们就可以轻松计算出所有字段长度的总和了。但是实际上 阅读全文