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

如何將派生類的列表轉換為C#中的基類列表?

Mary-Kate Olsen
發布: 2025-02-01 17:41:10
原創
1070 人瀏覽過

How to Convert a List of Derived Classes to a List of Base Classes in C#?

C#中將派生類列表轉換為基類列表

繼承機制允許我們基於現有類創建新類,但同樣的概念並不直接適用於泛型列表。具體來說,我們不能聲明一個List<基类>並為其賦值一個派生類型列表,即使派生類繼承自基類。請考慮以下示例:

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>(); // 编译错误
    }
}
登入後複製

這段代碼在編譯時失敗,因為編譯器期望的是一個A對象的列表,而不是C對象的列表。為了解決這個問題,我們需要將派生對象的列表轉換為基對象的列表。

轉換方法

List<派生类>轉換為List<基类>的方法是迭代列表元素並手動強制轉換它們。這可以使用ConvertAll方法實現:

List<A> listOfA = new List<C>().ConvertAll(x => (A)x);
登入後複製

在這裡,我們迭代C列表中的每個元素,將其轉換為A類型,並將其添加到新的listOfA列表中。

使用LINQ的替代方法

或者,我們可以使用LINQ來執行轉換:

List<A> listOfA = new List<C>().Cast<A>().ToList();
登入後複製

在這裡,Cast<A>將列表中的每個元素轉換為A類型,而ToList()則創建一個包含已轉換元素的新列表。

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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板