我知道已經有一些相關的問題發佈了,但是我看到了不同的答案,所以我很困惑哪個答案是正確的。這真的是向下傾斜嗎?它對我來說工作正常
在下面的鏈接,人們提到,向下轉換是不可能的 Convert/Cast base type to Derived type
儘管下面這個鏈接,人們提到,向下轉換是可能的,只有派生類是基類的一個實例 downcast and upcast
我做了一個小實驗,並使用直接投射在迷你項目(C#)上實現了向下轉換,例如:DerivedClass dc =(DerivedClass)baseClass,而不檢查DerivedClass是否是BaseClass的實例,令我吃驚的是,它工作正常,沒有錯誤,所以人們說向下轉換是不可能的?
所以我的問題是,真倒黴是不可能的?爲什麼人們對這個話題似乎有不同的答案?畢竟哪一個纔是真正的答案?有人可以更詳細地解釋這一點嗎?
示例代碼:
public class Order { }
public class PurchaseOrder : Order { // some new properties here for PurchaseOrder}
public static PurchaseOrder GetOrder()
{
Order order = new Order();
return (PurchaseOrder)order;
}
發佈您的測試代碼。 –
您在更新***中發佈的代碼沒有錯誤地編譯***,但當* run *將失敗且出現'InvalidCastException'。 –
我已經使用上面的代碼很長一段時間了,而且我還沒有看到任何錯誤。很奇怪...... –