首頁 >後端開發 >C++ >為什麼不能將`列表'分配給C#中的``列表''變量?

為什麼不能將`列表'分配給C#中的``列表''變量?

Barbara Streisand
Barbara Streisand原創
2025-01-28 13:46:09394瀏覽

Why Can't a `List` Be Assigned to a `List` Variable in C#?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn