- 注意深复制与浅赋值的问题
- C#中如果需要实现深复制,必须实现
ICloneable 接口。
using System;
namespace Factory1
{
//工作经验类
class WorkExperience :ICloneable
{
private string workDate;
public string WorkDate
{
get { return workDate; }
set { workDate = value; }
}
private string company;
public string Company
{
get { return company;}
set { company = value; }
}
public Object Clone(){
return (Object)this.MemberwiseClone();
}
}
//简历类
class Resume:ICloneable
{
private string name;
private string sex;
private string age;
private WorkExperience work;
public Resume(string name)
{
this.name = name;
work = new WorkExperience ();
}
private Resume(WorkExperience work)
{
this.work = (WorkExperience)work.Clone();
}
//设置个人信息
public void SetPersonalInfo(string sex,string age)
{
this.sex = sex;
this.age = age;
}
//设置工作经验
public void SetWorkExperience(string workDate,string company)
{
work.WorkDate = workDate;
work.Company = company;
}
//打印方法
public void Display()
{
Console.WriteLine ("{0} {1} {2}", name, sex, age);
Console.WriteLine ("workExperience:{0}{1}", work.WorkDate, work.Company);
}
public Object Clone()
{
Resume obj = new Resume (this.work);
obj.name = this.name;
obj.sex = this.sex;
obj.age = this.age;
return obj;
}
}
class MainClass
{
public static void Main (string[] args)
{
Resume a = new Resume ("aaa");
a.SetPersonalInfo ("man", "12");
a.SetWorkExperience ("1998-2001", "YY Company");
Resume b = (Resume)a.Clone ();
b.SetPersonalInfo ("girl", "22");
Resume c = (Resume)a.Clone ();
c.SetPersonalInfo ("boy", "66");
a.Display ();
b.Display ();
c.Display ();
}
}
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。