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

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

Susan Sarandon
發布: 2025-02-01 17:46:09
原創
478 人瀏覽過

How Can I Convert a List of Derived Class Objects to a List of Base Class Objects in C#?

從派生類列表轉換為基類列表

面向對象編程中,繼承基類和接口是很常見的做法。然而,在處理集合時,我們遇到一個明顯的限制:為什麼不能使用與基類相同的類或接口來定義列表?

考慮以下示例:

<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>
登入後複製

嘗試將 listOfA 實例化為 List<C> 會導致編譯器錯誤。為了解決這個問題,我們需要找到一個解決方法。

解決方案:顯式轉換和 LINQ

一種方法是手動遍歷列表並將每個元素轉換為所需的基類型。這可以使用 ConvertAll 方法實現:

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

另一種使用 LINQ 的解決方案是使用 Cast 運算符轉換整個列表:

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

通過使用這些技術,我們可以有效地將派生類的列表轉換為其基類型的列表,從而在處理繼承方案時具有更大的靈活性。

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

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