c# - 如何从基类的实例初始化派生类的实例?

标签 c# inheritance

我看过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 实现了 IBaseClassIDerivedClass 继承了 IBaseClass

有时,当我已经有一个基类的实例时,我希望能够初始化派生类。我可以创建一个构造函数,它只是将每个属性从基实例复制到派生类实例的属性,但是还有另一种方法吗?类似的东西:

BaseClass bc = new BaseClass();
DerivedClass dc = new DerivedClass() : bc;

这可行吗?如果不是,为什么不呢?我准备接受这可能是不可能的,但如果是这样,如果有人能解释原因,我会非常感兴趣。

最佳答案

不,那是不可能的。

您必须创建另一个对象,因为它必须具有第二个对象的特征。你不能只是将一个复制到另一个。如果允许的话,您可能会遇到一个状态无效的对象。

正如您已经提到的,最好的办法是创建一个“复制构造函数”。

关于c# - 如何从基类的实例初始化派生类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35031011/

相关文章:

c# - DevExpress过滤器编辑器: DropdownList

java - 如何使用扩展 Room 中另一个类的实体类?

java - 类的ArrayList作为参数

c++ - 虚方法调用在 C++ 中如何工作?

c# - 如何在 asp.net 中创建 DTO?

c# - 如何将数据插入 Microsoft Access 数据库?

C# LINQ to Entities 查询两个不同属性的交集

c# - 将命令参数传递给 WPF 中 ViewModel 中的方法?

ruby-on-rails - rails模型的继承

python - 从集合继承。计数器: 'fromkeys' is abstract