[Serializable]
public class User : ICloneable
{
public string name;
public string desc;
public string remark;
public User()
{ }
protected User(User u)
{
name = u.name;
desc = u.desc;
remark = u.remark;
}
object ICloneable.Clone()
{
return base.MemberwiseClone();
}
public User Clone()
{
return base.MemberwiseClone() as User;
//return new User(this);
}
public User Clone(bool IsDeepCopy)
{
using (MemoryStream ms = new MemoryStream(1000))
{
BinaryFormatter bf = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone));
bf.Serialize(ms, this);
ms.Seek(0, SeekOrigin.Begin);
User u = bf.Deserialize(ms) as User;
ms.Close();
return u;
}
}
}
public class Guest : User
{
public string IPAddress;
public Guest()
{ }
public Guest(User u)
: base(u)
{}
public Guest(Guest g)
: base(g)
{
IPAddress = g.IPAddress;
}
}
User admin = new User() { name = "admin", desc = "管理员", remark = "管理员" };
User admin1 = new User() { name = "admin1", desc = "管理员", remark = "管理员" };
/*问题1:如果大多数属性一样,只有一个属性不一样。我想直接复制对象里的属性,然后再修改不一样的属性,
我可以这样写吗?如下:
User admin2 = admin;
admin2.name = "admin2";*/
User admin2 = admin.Clone();
admin2.name = "admin2";
/*问题二:我现在想通过子类去复制父类的属性,然后再增加自己的属性,可以吗?比如:
User guest = new User() { name = "guste", desc = "游客", remark = "游客" };
Guest guest1 = guest;
guest1.IPAddress = "192.168.168.3";
Guest guest2 = guest;
guest1.IPAddress = "192.168.168.5";*/
User guest = new User() { name = "guste", desc = "游客", remark = "游客" };
Guest guest1 = new Guest( guest);
guest1.name = "guest1";
guest1.IPAddress = "192.168.168.3";
Guest guest2 = new Guest(guest);
guest2.name = "guest2";
guest2.IPAddress = "192.168.168.5";