c# 对象深拷贝

using System;
using System.Collections.Generic;

public class MyClass
{
    class InstanceA : ICloneable
    {
        public int x;
        public InstanceB B;
        public InstanceA() { }
        public InstanceA(int X, InstanceB b)
        {
            this.x = X;
            this.B = b;
        }
        object ICloneable.Clone()
        {
            return this.Clone();
        }
        public InstanceA Clone()
        {
            InstanceA A = this.MemberwiseClone() as InstanceA;
            A.B = this.B.Copy();
            return A;   //深复制
            //  return (InstanceA)this.MemberwiseClone();  //浅复制
            //return new InstanceA(this.x,this.B);     //use this can't get deep copy too..

        }
    }
    class InstanceB
    {
        public int y;
        public InstanceB Copy()
        {
            return this.MemberwiseClone() as InstanceB;
        }
    }

    public static void Main()
    {
        InstanceA obj1 = new InstanceA();
        obj1.x = 1;
        obj1.B = new InstanceB();
        obj1.B.y = 2;

        InstanceA obj2 = obj1.Clone();
        obj2.x = 3;
        obj2.B.y = 4;
        Console.WriteLine("Obj1.x is:{0} \t obj1.B.y={1}", obj1.x, obj1.B.y);
        Console.WriteLine("Obj2.x is:{0} \t obj2.B.y={1}", obj2.x, obj2.B.y);
        Console.ReadLine();
    }
}

原文地址:https://www.cnblogs.com/xianzuoqiaoqi/p/1512042.html