public class A {}
public class B : A {}
现在是实现这项工作的最佳方式
List<A> a;
List<B> b = new List<B>();
a = b; // throw Cannot convert List<B> to List<A>
谢谢
答案 0 :(得分:5)
List<T>
类型不支持协方差,因此您无法将List<B>
直接分配给List<A>
,即使B
本身可直接分配给A
1}}。您需要执行传递列表b
,然后将项目转换并添加到列表a
中。 ConvertAll
方法是一种方便的方法:
List<B> b = new List<B>();
// ...
List<A> a = b.ConvertAll(x => (A)x);