A类实例化一个对象a,然后由a 浅表拷贝出一个b作为副本。
对a的属性进行更改过程中发生异常需要终止变更操作。如何将副本b中的数据复制回a?

解决方案 »

  1.   

    上面两位,我要实现的是将b的数据复制给a,不能改变a指向的地址。
    只能自己实现拷贝的方法,把属性一个一个copy过去吗?
      

  2.   

    基本上是需要自己copy,有一个方法MemberWiseClone(),你试一下。
      

  3.   

    MemberWiseClone()不就是浅表拷贝吗?
    clone是复制出一个新的对象,而不是将数据复制给另一个已存在的对象。
      

  4.   

    如果用多对象协作或分布式存储数据那么用事务(比如COM+的事务)还有意义,单独一个对象有意义吗?
    其实拷贝和clone的程序应该差不多,不同的是不创建对象罢了。
      

  5.   

    Clone()只是创建一个构架相同的新对象,
    =等号会针对不同对象采取复制或引用。
    Copy()会复制一个一模一样的新对象。
    不过要是没有copy和clone的时候,而=等号又偏偏是引用复职,那么只能创建新对象,手动让新对象的成员等于旧对象的成员了,有高手有更好的办法么?
      

  6.   

    as long as your object members are all serializable, seehttp://blog.joycode.com/jgtm2000/archive/2003/12/01/8057.aspx
      

  7.   

    IClone实现复制,IEditObject实现对象属性可撤销的编辑,
    你查一下MSDN.
      

  8.   

    回复人: saucer(思归) ( ) 信誉:331  2005-03-08 02:08:00  得分: 0  
     
     
       as long as your object members are all serializable, seehttp://blog.joycode.com/jgtm2000/archive/2003/12/01/8057.aspx
      
     
    强,牛
      

  9.   

    >>>我需要的是复制给一个已经存在的对象,而不是复制一个新的什么叫复制一个“已经存在的对象,而不是复制一个新的”?如果是复制,都是产生新的对象,如果你是要保持状态,然后恢复原来状态,建议你读一下Rockford Lhotka的CSLA .NET编码,里面有类似undo的机制