首頁 >後端開發 >C++ >如何將列表轉換為C#中的列表?

如何將列表轉換為C#中的列表?

Linda Hamilton
Linda Hamilton原創
2025-02-01 17:56:40348瀏覽

How Can I Convert a List to a List in C#?

C# 中將 List 轉換為 List

面向對象編程中的繼承允許派生類繼承其基類的屬性和方法。然而,有時不清楚為什麼這種繼承不能應用於像 List 這樣的泛型集合。

考慮以下示例:

<code class="language-csharp">interface A { }

class B : A { }

class C : B { }

class Test
{
    static void Main(string[] args)
    {
        A a = new C(); // 正确
        List<A> listOfA = new List<C>(); // 编译器错误
    }
}</code>

在此代碼中,編譯器錯誤發生是因為 List 無法隱式轉換為 List。即使類 C 繼承自接口 A,編譯器也不能自動將派生類的集合轉換為其基類的集合。

為了解決這個問題,有兩種方法:

使用 ConvertAll

<code class="language-csharp">List<A> listOfA = new List<C>().ConvertAll(x => (A)x);</code>

ConvertAll 方法接受一個函數作為參數,並通過將該函數應用於源列表的每個元素來創建一個新列表。在本例中,函數 (x => (A)x) 將 List 的每個元素強制轉換為類型 A。

使用 LINQ

<code class="language-csharp">List<A> listOfA = new List<C>().Cast<A>().ToList();</code>

LINQ 的 Cast() 方法允許您將一種類型的列表轉換為另一種類型的列表。通過將 List 轉換為 List,然後將其轉換為 List,您可以從派生類對象的集合創建一個基類對象的集合。

以上是如何將列表轉換為C#中的列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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