為什麼不能在c#? List<string>
中分配給List<object>
直接分配給AList<string>
>變量會導致編譯器錯誤。 不允許隱式轉換,並且使用List<object>
>明確鑄造也失敗了。 (List<object>)
>
原因:>
>此限制是由於類型安全。 想像一下,如果允許這樣的任務。然後,您可以將其他類型的對象(例如,整數或自定義類)以外的類型添加到>中。 但是,此string
最初是List<object>
。 嘗試使用List<object>
參考訪問此列表的元素時,遇到非弦樂元素時會導致AList<string>
。 編譯器通過不稱呼分配來防止這種潛在的運行時錯誤。 string
>
System.InvalidCastException
雖然無法直接分配,但您可以使用替代方法實現所需的效果:
最簡單的方法是通過>迭代,並單獨添加每個元素。
List<string>
List<object>
Cast<T>
<code class="language-csharp">List<string> stringList = new List<string> { "apple", "banana", "cherry" }; List<object> objectList = stringList.Cast<object>().ToList();</code>
到 - 是另一回事。 除非您絕對確定>中的每個元素實際上都是
>,否則這通常是不允許的。 在不正確的情況下嘗試鑄造將導致運行時例外。 C#強制類型安全以防止這種情況。 您需要執行檢查或使用Linq的方法來安全過濾和施放字符串元素。 List<object>
因此,儘管反向操作似乎是類似的,但C#中的基本類型安全機制阻止了它是直接的操作。 仔細考慮元素類型在使用通用列表和類型轉換時至關重要。 List<string>
>
以上是為什麼不能將`列表'直接分配到c#中的列表變量)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!