我想知道为什么这会适本地填充派生类:
BaseClass bc = MethodThatReturnsBaseClassObject();
DerivedClass dc = bc as DerivedClass;
但这会创建一个空派生类对象:
DerivedClass dc = MethodThatReturnsBaseClassObject() as DerivedClass;
最佳答案
这是因为 BaseClass
不是 DerivedClass
的实例(但是 DerivedClass
是 BaseClass
的实例) ,因此您不能将基类的实例转换为派生类的实例(好吧,您可以,但如您所见,它将为 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/