C# 中為何不能將 List<string>
對象賦值給 List<object>
變量?
在 C# 中,嘗試將 List<string>
對象賦值給 List<object>
變量會導致編譯時錯誤。即使進行顯式轉換,此操作也不允許。讓我們深入探討其背後的原理:
考慮以下場景:
<code class="language-csharp">List<string> sl = new List<string>(); List<object> ol; ol = sl; // 产生编译时错误</code>
如果此轉換能夠成功執行,那麼如果您向 ol
列表添加一個類型為 Foo
的對象會發生什麼?這會在 sl
列表中創建一個不一致性,因為 sl
列表預期只包含字符串。當遍歷 sl
列表時,遇到 Foo
實例會導致類轉換異常,表明它無法轉換為字符串。
相反,從 List<object>
到 List<string>
的轉換可能有用。通過從更通用的類(object
)轉換到更具體的類(string
),它確保向字符串列表添加任何元素都不會違反對象列表的約束。但是,C# 可能並不支持這種類型的轉換。
以上是為什麼不能將`列表'分配給C#中的``列表''變量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!