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

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

DDD
DDD原創
2025-02-01 18:01:08649瀏覽

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

>>將派生類的列表轉換為C#

中的基本類列表 C#中的繼承允許從基類或接口創建派生類。但是,不允許將派生類的

直接分配給其基類的AList。 此限制源於類型系統對通用類型參數的嚴格性。 List>

考慮此示例:

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

class B : IA {}

class C : B {}

class Test
{
    static void Main(string[] args)
    {
        IA a = new C(); // This is valid
        List<IA> listOfIA = new List<C>(); // Compiler error
    }
}</code>
為了克服這一點,我們可以採用兩種主要方法:

方法1:使用ConvertAll

>

這種方法通過派生類的列表進行迭代,並將每個元素明確地投入到基類類型。

<code class="language-csharp">List<C> listOfC = new List<C>(); // Your list of derived classes
List<IA> listOfIA = listOfC.ConvertAll(x => (IA)x);</code>
>

方法2:使用Linq'sCast>

LINQ使用

>方法提供了更簡潔的解決方案。 此方法執行與Cast<T>相同的類型轉換,但具有更精簡的語法。 ConvertAll

>兩種方法都達到相同的結果:一個新列表,其中包含原始列表中的對象,但帶有基類類型。 通常,LINQ方法(
<code class="language-csharp">List<C> listOfC = new List<C>(); // Your list of derived classes
List<IA> listOfIA = listOfC.Cast<IA>().ToList();</code>
)是其可讀性和簡潔性的首選。 請記住要處理潛在異常,如果演員可能會失敗(例如,如果列表包含實際上並未從基類派生的元素)。

>)。

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

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