【发布时间】:2012-10-31 00:34:09
【问题描述】:
MemberwiseClone() 将创建浅拷贝,它将对值类型进行逐位拷贝,并且只拷贝引用类型的引用。我们需要创建一个深层副本以拥有引用类型的独立副本。还行吧。我明白了。
现在我的问题是:为什么在调用 MemberwiseClone() 时 System.Object 变量的反应不同?
例如:
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。这是为什么呢?
【问题讨论】:
-
@Michael,感谢您的编辑。请回答我的问题,任何帮助将不胜感激。