泛型类型多态

时间:2011-03-06 22:54:06

标签: c# generics inheritance polymorphism

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>

谢谢

1 个答案:

答案 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);