【发布时间】:2015-07-22 22:17:19
【问题描述】:
public class ParentClass
{
public int myId;
public string commonField1;
public string commonField2;
public string commonField3;
public string changeable;
public List<ChildClass> children;
public ParentClass(int id)
{
myId = myId;
}
public createChildren()
{
for(int i = 0; i < 999999; i++)
{
children.Add(new ChildClass(id));
}
}
}
public class ChildClass : ParentClass
{
public ChildClass(int id) : base (id)
{
myId = myId;
changeable = "new";
}
}
因为ChildClass 只存在于它的ParentClass 的上下文中,并且会有999999 个孩子。那是创建所有commonField 的999999 副本,而实际上它只需要对其父级的引用。除了引用之外,ChildClass 唯一需要存储的是changeable。
如何做到这一点?
当我需要孩子时,我几乎在想一种更好的方法,就是制作 999999 个 ParentClass 的浅拷贝,然后更改 999999 个可变字段。浅拷贝将引用commonField1 还是深拷贝值?
【问题讨论】:
-
听起来你根本不应该使用继承。听起来孩子并不是真正的父母——它只需要一个对父母的reference。你为什么首先让 Child 扩展 Parent ?
changeable是否需要在Parent中?我们目前确实没有足够的上下文来建议其他代码... -
是的
changeable需要在Parent中 -
不清楚您要完成什么。如果您只使用两个公共字段,为什么
ChildClass派生自ParentClass。您不应该从只包含公共字段的公共接口或基类派生吗?我认为您混淆了包装和继承。 -
我已经了解了基类/派生类而不是接口(还)。谷歌界面,看看是否更好
-
如果
ChildClass真的“是”ParentClass那么它也会有一个孩子列表,每个孩子都有一个孩子列表,等等. 我同意继承似乎不是正确的解决方案。
标签: c# class inheritance