2010-10-27 21 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,因爲沒有有效的轉換。

相關問題