>>將派生類的列表轉換為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
>
>方法提供了更簡潔的解決方案。 此方法執行與Cast<T>
相同的類型轉換,但具有更精簡的語法。
ConvertAll
<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中文網其他相關文章!