摘要:
关于浅拷贝和深拷贝,我的理解不是很清晰,简单说来,我认为是这样子: 浅拷贝:引用成员在被拷贝时仅复制源对象中引用成员的地址到新对象中,所以在新对象中对引用成员进行更改会影响到源对象(除对引用成员进行赋值外)。 深拷贝:引用成员在拷贝时新建一个引用对象到新对象中,且将源对象中引用对象的成员值复制到新对象的引用对象中,所以在新对象中对引用成员进行更改不会影响源对象。 说起来概念也简单,我想大家纠结的是如何实现深拷贝?浅拷贝的实现很简单,调用Object.MemberwiseClone就万事大吉了。在网上找了一个通过序列化实现深拷贝的例子,自己改了改,欢迎大家品头论足。 这段程序的输出为: obj. 阅读全文
posted @ 2011-03-26 00:26
辛勤的代码工
阅读(794)
评论(1)
推荐(0)
摘要:
创建一个引用类型的实例时,系统分以下三步骤:首先为该实例分配内存。初始化对象的附加成员(即方法表指针和一个SyncBlockIndex)调用类型的实例构造器设置对象的初始状态。 以下情况,类型实例的创建不需要调用实例构造器。调用Object的MemberwiseClone方法,它将执行以下几步:为对象分配内存,初始化对象的附加成员,将源对象的字节拷贝到新创建的对象中。反序列化一个对象时,通常也不会调用构造器。 内联方式初始化实例字段的语法,如下:class ClassA{ int i = 5;} 实际上内联方式初始化实例字段的简化语法都被转换成了构造器中的代码。这时,如果在构造器中又对字段进. 阅读全文
posted @ 2011-03-26 00:16
辛勤的代码工
阅读(284)
评论(0)
推荐(0)
浙公网安备 33010602011771号