我试图复制一个对象,然后将其修改,而不更改原始对象。相关的类是:

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/

10-13 08:05