我试图复制一个对象,然后将其修改,而不更改原始对象。相关的类是:
abstract class Upgrade {}
class Shield: Upgrade
{
public Shield(Shield a) {}
}
问题是当另一个类想要获取一个“ Upgrade”对象而该类却不知道它获取哪个对象时。例如:
public void AddUpgrade(Upgrade upgrade)
{
for (int i = 0;i<Aliens.Count; i++)
{
Aliens[i].AddUpgrade(What should i put here?);
}
}
我必须使用复制构造函数,因为我不希望所有外星人共享相同的升级参考,但是Upgrade是一个抽象类,我该怎么办?
最佳答案
您可以使Upgrade
可克隆,即在其中添加Clone()
(每个后代都将实现),它将变为:
Aliens[i].AddUpgrade(upgrade.Clone());
关于c# - 用抽象类创建一个拷贝构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15728275/