14 浅拷贝月深拷贝

无论是浅拷贝还是深拷贝,微软建议用类型继承ICloneable接口的方式明确告诉调用者:该类型可以被拷贝。

    class Employee : ICloneable
    {

        public string IDCode { get; set; }
        public int Age { get; set; }
        public Department Department { get; set; }
        public object Clone()
        {
            return MemberwiseClone();
        }
        public Employee DeepClone()
        {
            using(Stream objectStream = new MemoryStream())
            {
                IFormatter formatter = new BinaryFormatter();
                formatter.Serialize(objectStream, this);
                objectStream.Seek(0, SeekOrigin.Begin);
                return formatter.Deserialize(objectStream) as Employee;
            }
        }

        public Employee ShallowClone()
        {
            return Clone() as Employee;
        }
    }

    class Department
    {
        public string Name { get; set; }
        public override string ToString()
        {
            return Name;
        }
    }

 

posted @ 2016-01-13 14:54  小-黑  阅读(78)  评论(0)    收藏  举报