是这样的Form1与Form2二个窗体(Form2为Form1的Dialog)
把Form1中的一个对像(obj)通过构造函数把(obj)传递给Form2然后在Form2中对(obj)进行维护
但是现在在关闭Dialog时Form1中的对象的确被改变了!可是在Form2中如果想要对操作进行取消确不行
好像是引用过来而不是传递过来的!所以我想把(obj)备份一个 也就是说当点确消时在把Obj的拷贝传回给
Form1 请问该怎么来做?谢谢大家

解决方案 »

  1.   

    obj1 = obj2.clone();
    obj1和obj2为相同类型的对象
      

  2.   

    C#里的对象都是作引用传递的,
    可以自己写一个拷贝方法。或者默认的Clone();
      

  3.   

    我怎么打不出来Clone()。。
      

  4.   

    public object DeepClone(object source)
            {
                if (source == null) 
                    return null;
                Object objectReturn = null;
                using (MemoryStream stream = new MemoryStream())
                {
                    try
                    {
                        BinaryFormatter formatter = new BinaryFormatter();
                        formatter.Serialize(stream, source);
                        stream.Position = 0;
                        objectReturn = formatter.Deserialize(stream);
                    }
                    catch (Exception e)
                    {
                        int a = 1;
                    }
                }
                return objectReturn;
            }条件是该object可以序列化.
      

  5.   

    6楼的方法最好不要用,除非lz:完全不考虑性能+完全知道发生了什么+相关的代码高度可控制+测试代码可以写的很全面 or 仅仅实现就可以了,烂摊子可以丢给别人最好是自己去实现一个Clone方法,不要用这种偷懒的方法
      

  6.   

    如果LZ只是仅仅一个已知道对象的拷贝, 完全可以采用硬写的方法(new 一个, 再一个一个赋值).