OOPs在这个任务中发生了什么

时间:2010-10-27 12:28:12

标签: c# oop

我遇到了这些代码行

ClassA classAObject;
//some lines of code that hydrate 'classAObject'
DerivedFromClassA derivedObject = classAObject as DerivedFromClassA;

最后一行是怎么回事?是仅将赋予的对象分配给derivedObject和classAObject之间的那些值?

2 个答案:

答案 0 :(得分:6)

不,它大致相当于:

DerivedFromClassA derivedObject = null;
if (classAObject is DerivedFromClassA)
{
    derivedObject = (DerivedFromClassA) classAObject;
}

换句话说,结果将 作为空引用,引用同一对象,但静态类型为派生类型。

答案 1 :(得分:3)

不,它正在访问同一个对象,但您现在可以从DerivedFromClassA类型访问该对象的各个部分。只有一个对象。

此外,如果classAObject不是DerivedFromClassA的实例或从它派生的类型,那么derivedObject将为null,因为没有有效的强制转换。