首页 >后端开发 >C++ >如何将派生类的列表转换为C#中的基本类列表?

如何将派生类的列表转换为C#中的基本类列表?

DDD
DDD原创
2025-02-01 18:01:08704浏览

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