【发布时间】:2024-01-08 12:36:01
【问题描述】:
我需要定义一个进行浅拷贝的 Clone() 方法。 (无需深拷贝)
但我也需要它来复制派生类的成员。
如果我有
class Base {
int baseMember;
public (virtual?) Base Clone() {
return (Base)this.MemberwiseClone()
}
}
那么我应该为 Clone() 派生所有其他类吗? Base.Clone() 也会复制derivedMember 吗?
class Derived {
int derivedMember; //will this also be copied by base.Clone()?
//Necessary?
public new Derived (override Base?) Clone() {
return (Derived)this.MemberwiseClone();
}
}
【问题讨论】:
-
MemberwiseClone()无论你从哪个函数调用它都是同一个函数。 -
好吧,因为
Clone返回Base它不会包含来自Derived的任何内容,可能更好地实现IClonable并从您的克隆方法返回object