,开发人员可能会遇到错误:
cannot convert from 'System.Collections.Generic.List<ConsoleApplication1.DerivedClass>' to 'System.Collections.Generic.List<ConsoleApplication1.BaseClass>'
此错误不是立即直观的,因为人们可能认为派生类列表应与基类列表兼容。要了解这种限制背后的原因,必须在通用集合中掌握协方差的概念。在C#中可以是协变量的或不变的。协变量的集合允许将派生类型替换为其基本类型,而不变的集合则不得。是一个不变集合的示例。这意味着列表&lt; derivedClass&gt;无法分配给列表&lt; baseclass&gt;因为编译器保证列表中的所有元素始终为已声明的T型。 t&gt;防止可能违反类型安全的无效操作。例如,如果列表&lt; baseclass&gt;被分配给列表&lt; derivedClass&gt;,派生的类实例可能会被基础类实例替换,从而导致出乎意料的行为。 >安全地将派生类的列表传递给期望基类列表的函数,开发人员可以利用> iEnumerable&lt; t&gt;
。这允许将派生类型替换为基本类型,从而在不损害类型安全性的情况下解决转换问题。>在提供的代码片段中,以下修改解决了错误:
>
以上是为什么我不能将`列表'转换为C#中的``列表''?的详细内容。更多信息请关注PHP中文网其他相关文章!