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>
谢谢
最佳答案
List<T>
type 不支持协方差,因此您无法分配 List<B>
直接发送至List<A>
即使B
其本身可直接分配给 A
。您需要执行列表 b
的传递,将项目转换并添加到列表 a
中当你去时。 ConvertAll
方法是执行此操作的便捷方法:
List<B> b = new List<B>();
// ...
List<A> a = b.ConvertAll(x => (A)x);
关于c# - 泛型类型多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5214063/