虽然我们可以从基类/接口继承,但为什么不能声明List<> 使用相同的类/接口呢?
List<>
interface A { } class B : A { } class C : B { } class Test { static void Main(string[] args) { A a = new C(); // OK List<A> listOfA = new List<C>(); // compiler Error } }
有办法吗?
进行此工作的方法是遍历列表并转换元素。这可以使用ConvertAll来完成:
List<A> listOfA = new List<C>().ConvertAll(x => (A)x);
您还可以使用Linq:
List<A> listOfA = new List<C>().Cast<A>().ToList();