考慮兩個簡單的類爲什麼在c#中可以直接進行向上轉換,但爲了向下轉換,我們需要expilicit轉換?
public class Parent
{
public void ShowData()
{
}
}
public class Child : Parent
{
public void GetData()
{
}
}
// Upcasting -- NO ERROR
Parent objParent = new Child();
// Downcasting -- ERROR
Child objChild = new Parent();
// Downcasting -- NO ERROR
Child objNewChild = (Child)new Parent();
- 爲什麼
UpCasting
不需要explicit casting
? - 爲什麼
DownCasting
要求explicit casting
?
因爲它應該如何猜測你想要投射哪個孩子?(因爲你可以有多個孩子) – musefan
@musefan:由於它試圖分配的變量的類型?這*可能*是一個隱式轉換,但它不是... –