MemberwiseClone()
将创建浅拷贝,它将逐位复制值类型,并且只复制引用类型的引用。我们需要创建一个深层副本以拥有引用类型的独立副本。还行吧。我明白了。现在我的问题是:为什么System.Object
调用 MemberwiseClone() 时变量的反应不同?
例如:
Public class Test
{
public int x;
public object obj;
public Test MyClone()
{
return (Test) this.MemberwiseClone();
}
}
现在在我的 Main 方法中访问它:
public static void Main()
{
Test obj1 = new obj1;
obj1.x = 1;
obj1.obj = "x";
Test obj2 = obj1.MyClone();
obj2.obj = "y"
}
这不应该改变obj1.obj
y 的值吗?由于 obj 是一个System.Object
显然是引用类型的实例。但它不会改变 -obj1.obj
给出 x 并obj2.obj
给出 y。为什么是这样?