c# - 将基类转换为派生类

标签 c# asp.net inheritance type-conversion

我想知道为什么这会适本地填充派生类:

BaseClass bc = MethodThatReturnsBaseClassObject();
DerivedClass dc = bc as DerivedClass;

但这会创建一个空派生类对象:

DerivedClass dc = MethodThatReturnsBaseClassObject() as DerivedClass;

最佳答案

这是因为 BaseClass 不是 DerivedClass 的实例(但是 DerivedClassBaseClass 的实例) ,因此您不能将基类的实例转换为派生类的实例(好吧,您可以,但如您所见,它将为 null)。

您可以通过向将基类作为参数的派生类添加构造函数来实现(我认为)您想要实现的目标:

public DerivedClass(BaseClass baseClass) {
    // Populate common properties, call other derived class constructor, or call base constructor
}

然后:

 DerivedClass dc = new DerivedClass(MethodThatReturnsBaseClassObject());

关于c# - 将基类转换为派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19800878/

相关文章:

c# - RegularExpressionAttribute 行为中的正则表达式

c# - ASP.NET-Telerik : Change size Marker

c++ - 不能使用继承、纯虚方法分配抽象类型的对象

c# - XtraGrid 中列中的唯一值列表

c# - 使用 .NET MailMessage 将 Content-Transfer-Encoding 设置为 Quoted-printable

asp.net - 如何使用 JavaScript 访问客户端注册表?

javascript - 为什么我们可以先修复构造函数属性然后重置原型(prototype)?

java - 继承java构造函数

c# - 转换成 "object"类型的目的是什么?

c# - 使用 SqlBulkCopy 为每个插入的行触发触发器