如果我有兩類:將類型的泛型容器強制轉換爲繼承類型的容器?
public class A { }
public class B : A { }
和我創建一個通用的容器,而這需要它的功能:
public void Foo(List<A> lst) { ... }
我得到一個無效的轉換,如果我試圖鑄造List<B>
到List<A>
,而是必須通過它,像這樣:
var derivedList = new List<B>();
Foo(new List<A>(derivedList));
是否有某種方式來傳遞一個List<B>
這函數沒有分配全新列表的開銷,或者C#不支持從派生類型的泛型容器轉換爲其基類型?
請參閱此處:http://stackoverflow.com/questions/1817300/convert-list-of-derived-class-objects-to-list-of-base-class-objects – SwDevMan81
相關:http:// stackoverflow。 com/questions/686305 /轉換成一個基類型的繼承類型列表 – SwDevMan81