我遇到了这些代码行
ClassA classAObject;
//some lines of code that hydrate 'classAObject'
DerivedFromClassA derivedObject = classAObject as DerivedFromClassA;
最后一行是怎么回事?是仅将赋予的对象分配给derivedObject和classAObject之间的那些值?
答案 0 :(得分:6)
不,它大致相当于:
DerivedFromClassA derivedObject = null;
if (classAObject is DerivedFromClassA)
{
derivedObject = (DerivedFromClassA) classAObject;
}
换句话说,结果将 作为空引用,或引用同一对象,但静态类型为派生类型。
答案 1 :(得分:3)
不,它正在访问同一个对象,但您现在可以从DerivedFromClassA
类型访问该对象的各个部分。只有一个对象。
此外,如果classAObject不是DerivedFromClassA
的实例或从它派生的类型,那么derivedObject将为null,因为没有有效的强制转换。