例如: class Person { public Int32 i; }Person person = new Person();调用MemberwiseClone()是一个新的Person对象,但是如果Person p1 = person; 则p1和person指向同一个person对象。-------- 对于 class Person { public Object obj; }MemberwiseClone()是一个新的Person对象,但是新对象的obj成员是和原来的对象是同一个,也就是引用类型是copy“句柄"的
浅拷贝使用Object类MemberwiseClone实现
MemberwiseClone:创建当前 Object 的浅表副本
浅拷贝(shallow copy)对于引用类型对象中的值类型字段进行了逐位复制。赋值运算符只是把源对象的引用赋值给目的对象,两者引用同一个对象。
浅拷贝后的对象的值类型字段更改不会反映到源对象,而赋值运算后的对象的值类型字段更改会反映到源对象
class Person
{
public Int32 i;
}Person person = new Person();调用MemberwiseClone()是一个新的Person对象,但是如果Person p1 = person; 则p1和person指向同一个person对象。--------
对于
class Person
{
public Object obj;
}MemberwiseClone()是一个新的Person对象,但是新对象的obj成员是和原来的对象是同一个,也就是引用类型是copy“句柄"的