虽然我们可以从基类/接口继承,但为什么我们不能声明一个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();