当D类派生自B类时,如何仅分配给它的B部分?
在C ++中,我会这样做:
D d;
B b;
d.B::operator = (b);
C#的等价物是什么?
答案 0 :(得分:1)
在C#中没有相应的切片。您需要手动创建基类的实例并复制相关属性。如果基类具有非虚拟克隆方法(或复制构造函数),那么您可以使用它,但不能像在C ++中那样使用切片。
答案 1 :(得分:1)
如果
class B {}
class D : B {}
然后D
基本上 B
并增加了功能。它的“部分”不是B
,而 是B
。
所以这不可能像你想要的那样以直接的方式进行。您必须自己在D
中实现一个函数,例如void Merge(B b)
将B
中的字段分配给对象D
)相关base
字段。