新人犯的錯誤,記錄一下供以后參考。
有兩個類
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);這種寫法我沒測試,大家可以試試,應該也是可以的。
