2016-09-21 127 views
-1

找孩子,我有2個班繼承類

public class A 
{ 
    public string prop1 { get; set; } 
    public string prop2 { get; set; } 
    public string prop3 { get; set; } 
} 

public class B : A 
{ 
    public string prop4 { get; set; } 
} 

我有一種方法來填充列表與B類型。

問題:什麼是得到的結果爲List<A>

List<B> BList = new List<B>(); 
BList = GetData(); //fill List with Data 
List<A> AList = (List<A>)BList; // convert? cast? 

A最簡單的方法有B類的各個領域因此必須有一個簡單的方法來擺脫BA

+0

重複的鏈接是不是繼承 – c0rd

+0

第一個答案是。 –

+1

既然你有一個'List'在這裏,你也可以使用Linq投影'List AList = BList.Select(b =>(A)b).ToList();' – 2016-09-21 06:27:30

回答

1

你將不得不從BList創建一個新的List<A>實例與所有項目的引用:

List<A> AList = new List<A>(BList); 

這是因爲List<T>不是協變(也不可能是)。

+0

謝謝你的回答。 – c0rd