C# 中將基類物件賦值給衍生類別參考
在 C# 中,能否使用明確型別轉換將基底類別物件賦值給衍生類別參考?嘗試執行此操作會導致運行時錯誤。
解釋
不能直接將基底類別物件賦值給衍生類別參考。這是因為衍生類別引用假定它指向衍生類別的實例,而不是基底類別物件。將基類物件賦值給衍生類別參考會導致行為不一致和意外結果。
範例
考慮以下程式碼:
<code class="language-csharp">object o = new object(); string s = (string)o; int i = s.Length;</code>
嘗試存取字串變數 s 的 Length 屬性將導致異常,因為 s 實際上是一個對象,而不是字串。
為了實作基底類別和衍生類別之間的轉換,可以考慮實作一個方法,該方法根據基底類型建立適當的衍生型別實例。或者,重新評估繼承層次結構以消除對這種轉換的需求。
以上是C# 中可以將基底類別物件指派給衍生類別參考嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!