日期:2014-05-17  浏览次数:20481 次

关于浅拷贝和深拷贝的理解问题
请问,C#里浅拷贝是新建一个对象,然后原对象的字段是值类型就复制值,原对象的字段是引用类型就复制地址。深拷贝则是新建一个对象,然后原对象的字段是值类型就复制值,原对象的字段是引用类型的话新对象就在托管堆新开辟一个内存存放引用类型字段的值,是不是这样理解呢?

------解决方案--------------------
把新对象的某个对象变量指向源对象那个对象。

C# code
class A
{
    public string Text;
}
class Test:ICloneable
{
    public A a = new A();
      

    public object Clone()
    {
        return this.MemberwiseClone();
    }

     
}

  protected void Page_Load(object sender, EventArgs e)
    {

        Test t = new Test();
        t.a.Text = "A";

        Response.Write(t.a.Text);
        Test t1 = (Test)t.Clone();
        t.a.Text = "B";

        Response.Write(t1.a.Text);
        
    }

------解决方案--------------------
对引用类型字段复制包括它的引用和它的内容
-------------
这一句有点歧义...这里“它的引用”所指向的地址已经不同于源对象的地址了,只是引用的类型相同...