我正在尝试复制一个对象,然后对其进行修改,而不更改原始对象。相关的类有:
abstract class Upgrade {}
class Shield: Upgrade
{
public Shield(Shield a) {}
}
Run Code Online (Sandbox Code Playgroud)
问题是当另一个类想要获取“升级”对象但该类不知道它获取哪个对象时。例如:
public void AddUpgrade(Upgrade upgrade)
{
for (int i = 0;i<Aliens.Count; i++)
{
Aliens[i].AddUpgrade(What should i put here?);
}
}
Run Code Online (Sandbox Code Playgroud)
我必须使用复制构造函数,因为我不希望所有外星人共享相同的升级引用,但升级是一个抽象类,那么我应该做什么?
您可以使其Upgrade可克隆,即添加Clone()到它(每个后代都会实现),它将变成类似:
Aliens[i].AddUpgrade(upgrade.Clone());
Run Code Online (Sandbox Code Playgroud)