Пример #1
0
        public Object Clone()
        {
            Resume obj = new Resume(this.work);

            obj.name = this.name;
            obj.sex = this.sex;
            obj.age = this.age;

            return obj;
        }
Пример #2
0
 static void Main(string[] args)
 {
     Resume r1 = new Resume();
     r1.Name = "小明";
     r1.Age = 20;
     r1.Work = new WorkExperence("程序员","2010");
     Resume r2 = (Resume)r1.Clone();
     r2.Name = "张建";
     r2.Work.Work = "老师";
     r2.Work.Time = "1992";
     r2.Display();
     r1.Display();
 }
Пример #3
0
        static void Main(string[] args)
        {
            Resume a = new Resume("大鸟");
            a.SetPersonalInfo("男", "29");
            a.SetWorkExperience("1998-2000", "XX公司");

            Resume b = (Resume)a.Clone();
            b.SetWorkExperience("1998-2006", "YY企业");

            Resume c = (Resume)a.Clone();
            c.SetPersonalInfo("男", "24");

            a.Display();
            b.Display();
            c.Display();

            Console.Read();
        }
Пример #4
0
        // MemberwiseClone() 这个是浅拷贝,如果是值就直接拷贝值,如果是引用,则拷贝引用,而非拷贝具体引用指向的对象。
        // 如果Resume类中还有另外一个类,比如叫工作经历WorkExperence,想实现深拷贝,需要2步工作
        // 1.WorkExperence需要实现的IClone接口。
        // 2.在Resume类中自己写拷贝,不调用MemberwiseClone()。
        public object Clone()
        {
            // 浅拷贝方法
            // return (object)this.MemberwiseClone();

            // 深拷贝方法
            Resume r = new Resume();
            r.Name = this.Name;
            r.Age = this.Age;
            // 由于这里使用到了赋值,所以WorkExperence必须实现浅拷贝,否则则是引用赋值。
            r.Work = this.Work;
            return r;
        }