none
如何实现完全克隆 RRS feed

  • 问题

  • 对象变量之间赋值是引用传递,修改一个变量,另一个也发生改变,怎么能避免这种情况
    2009年11月12日 1:16

答案

  • Activator.CreateInstance()方法来创建对象,然后在给这个对象赋值

    比如:
    class classA =Activator.CreateInstance(class.GetType(),true);
    然后对classA赋值。

    • 已标记为答案 gue2 2009年11月12日 3:38
    2009年11月12日 1:36
  • 你好!
         深度拷贝需要让你的类型实现ICloneable接口,然后自己提供一个Clone()方法来实现深拷贝的目的:
         public class TestClass:ICloneable
         {
                public int x=0;
                public int y=0;
                public object Clone()
                {
                       TestClass temp=new TestClass();
                       temp.x=this.x;
                       temp.y=this.y;
                       return temp;
                 }
    周雪峰
    2009年11月12日 3:33
    版主

全部回复

  • Activator.CreateInstance()方法来创建对象,然后在给这个对象赋值

    比如:
    class classA =Activator.CreateInstance(class.GetType(),true);
    然后对classA赋值。

    • 已标记为答案 gue2 2009年11月12日 3:38
    2009年11月12日 1:36
  • 你也可以通过序列化和反序列化。
    Do My Best
    2009年11月12日 2:09
  • 你好!
         深度拷贝需要让你的类型实现ICloneable接口,然后自己提供一个Clone()方法来实现深拷贝的目的:
         public class TestClass:ICloneable
         {
                public int x=0;
                public int y=0;
                public object Clone()
                {
                       TestClass temp=new TestClass();
                       temp.x=this.x;
                       temp.y=this.y;
                       return temp;
                 }
    周雪峰
    2009年11月12日 3:33
    版主
  • 不行啊,调了一上午,都想咬人了
    2009年11月12日 3:39
  • 你好!
         请问遇到了什么问题?
    周雪峰
    2009年11月12日 4:40
    版主