2010-10-27 18 views
3

发生在这里我遇到的代码OOPS什么在这个任务

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

这些线来怎么回事,就上线?它是否只为derivedObject分配了derivedObject和classAObject之间通用的那些值?

回答

6

不,这大致上相等于:

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

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

3

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

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

相关问题