List<子類>轉List<父類>過程中犯的一些錯誤


新人犯的錯誤,記錄一下供以后參考。

有兩個類 

1 public class A
2 {
3    public string Name{get;set;}  
4 }
5 
6 public class B:A
7 {
8   public int Age{get;set;}
9 }

有一個方法,需要類B age作為條件,最后要返回的是其父類A的集合

1 public List<A> GetAByAge(int age)
2 {
3      //方法體
4 }

本心想着,B是A的子類,直接返回List<B>即可,但實際是不行。於是我開始找原因,尋尋覓覓發現,原來思路出問題了。

事實是這樣子的,雖然A是B的子類,但是List<A> 和List<B>他的實際類型都是List<T>,A、B只是List<T>對象的一個泛型而已。所以,直接返回肯定是不行的,強轉,自然也是有問題的。那要怎么解決呢?高手告訴我,其實List已經提供了這種轉的方法。

比如b是List<B>類型的一個對象,那么就可以利用b.Cast<A>().ToList();來轉換為List<A> 對象。

另外我也發現,可以這么寫List<A> a=new List<A>(b);這種寫法我沒測試,大家可以試試,應該也是可以的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM