Exemplo n.º 1
0
        public object Clone()
        {
            // 实现深复制-方式1:依次赋值和实例化
            DeepCopy newObj = new DeepCopy();

            newObj.a         = new A();
            newObj.a.message = this.a.message;
            newObj.i         = this.i;

            return(newObj);
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            DeepCopy dc = new DeepCopy();

            dc.i = 10;
            dc.a = new A();

            DeepCopy deepClone   = dc.Clone() as DeepCopy;
            DeepCopy shadowClone = dc.MemberwiseClone() as DeepCopy;

            // 深复制的目标对象将拥有自己的引用类型成员对象
            deepClone.a.message = "我是深复制的A";
            Console.WriteLine(dc);
            Console.WriteLine(deepClone);
            Console.WriteLine();
            // 浅复制的目标对象将和原始对象共享引用类型成员对象
            shadowClone.a.message = "我是浅复制的A";
            Console.WriteLine(dc);
            Console.WriteLine(shadowClone);

            Console.ReadKey();
        }