use*_*116 6 c# asp.net inheritance type-conversion
我想知道为什么这会适当地填充派生类:
BaseClass bc = MethodThatReturnsBaseClassObject();
DerivedClass dc = bc as DerivedClass;
Run Code Online (Sandbox Code Playgroud)
但是这会创建一个null派生类对象:
DerivedClass dc = MethodThatReturnsBaseClassObject() as DerivedClass;
Run Code Online (Sandbox Code Playgroud)
发生这种情况是因为BaseClass它不是DerivedClass(但是DerivedClass是其实例BaseClass)的实例,因此您不能将基类的实例强制转换为派生类的实例(嗯,您可以,但它将为您找到的null).
你可以通过在派生类中添加一个构造函数来实现你想要实现的目标,该派生类将基类作为参数:
public DerivedClass(BaseClass baseClass) {
// Populate common properties, call other derived class constructor, or call base constructor
}
Run Code Online (Sandbox Code Playgroud)
然后:
DerivedClass dc = new DerivedClass(MethodThatReturnsBaseClassObject());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10114 次 |
| 最近记录: |