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>
謝謝
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>
類型不支持協方差,所以你不能直接分配給List<B>
List<A>
即使B
本身可直接分配給A
。你需要做一個通過列表b
,轉換和添加項目列表a
隨時隨地。該ConvertAll
方法是做到這一點的快捷方法:
List<B> b = new List<B>();
// ...
List<A> a = b.ConvertAll(x => (A)x);
什麼ConvertAll的行爲差異(X = >(A)x)和Select(x =>(A)x)? – Proviste 2011-03-07 10:08:50
'ConvertAll'是'List
參見:http://stackoverflow.com/questions/2184551/difference-between-covariance-contra-variance – 2011-03-06 23:01:33