仅分配给对象的基类部分

时间:2013-05-10 14:28:37

标签: c# inheritance assignment-operator

当D类派生自B类时,如何仅分配给它的B部分?

在C ++中,我会这样做:

D d;
B b;
d.B::operator = (b);

C#的等价物是什么?

2 个答案:

答案 0 :(得分:1)

在C#中没有相应的切片。您需要手动创建基类的实例并复制相关属性。如果基类具有非虚拟克隆方法(或复制构造函数),那么您可以使用它,但不能像在C ++中那样使用切片。

答案 1 :(得分:1)

如果

class B {}
class D : B {}

然后D基本上 B并增加了功能。它的“部分”不是B,而 B

所以这不可能像你想要的那样以直接的方式进行。您必须自己在D中实现一个函数,例如void Merge(B b)B中的字段分配给对象D)相关base字段。