c#的各种深浅复制

来源:互联网 发布:数组和指针的区别 知乎 编辑:程序博客网 时间:2024/06/07 06:00

c#中,对于对象的复制给出如下渐进式的设计

    public class Content {
        public int Val = 0;
    }
    public class Cloner {
        public Content MyContent = new Content();
        public Cloner() {
        }

        public object GetCopy() {
            return MemberwiseClone ();
        }
    }
即利用MemberwiseClone来做,但是本函数只是生成新的Cloner之后,将成员值一一对应的复制过去,新的跟旧的指向了同一个Content

为了达到深复制,如下:

    public class Content {
        public int Val = 0;
    }
    public class Cloner:ICloneable {
        public Content MyContent = new Content();
        public Cloner(int val) {
            MyContent.Val = val;
        }
        public object Clone() {
            Cloner clonedCloner = new Cloner (MyContent.Val);
            return clonedCloner;
        }
    }

当然其也有可能需要递归调用内部各个成分的Clone函数

0 0
原创粉丝点击