我看过How can I create an instance of a derived class from an instance of a base class and include private fields?和 Create an instance of derived class from the base class但要么我不明白,要么它们不是我要找的东西。
我有一个派生自另一个的类,也实现了一个特定的接口(interface):
public class DerivedClass : BaseClass, IDerivedClass
BaseClass
实现了 IBaseClass
,IDerivedClass
继承了 IBaseClass
。
有时,当我已经有一个基类的实例时,我希望能够初始化派生类。我可以创建一个构造函数,它只是将每个属性从基实例复制到派生类实例的属性,但是还有另一种方法吗?类似的东西:
BaseClass bc = new BaseClass();
DerivedClass dc = new DerivedClass() : bc;
这可行吗?如果不是,为什么不呢?我准备接受这可能是不可能的,但如果是这样,如果有人能解释原因,我会非常感兴趣。
最佳答案
不,那是不可能的。
您必须创建另一个对象,因为它必须具有第二个对象的特征。你不能只是将一个复制到另一个。如果允许的话,您可能会遇到一个状态无效的对象。
正如您已经提到的,最好的办法是创建一个“复制构造函数”。
关于c# - 如何从基类的实例初始化派生类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35031011/