我有下面的類:實例化父類的列表與子類
public abstract class ParentCollection
{
public List<ParentObject> MyList { get; set; }
public ParentCollection(){}
}
ParentObject
具有從它繼承,ChildObject
一個子類。 ParentCollection
還具有以下亞類:
public class ChildCollection : ParentCollection
{
public ChildCollection() : base()
{
this.MyList = new List<ChildObject>();
}
private void Filter()
{
this.MyList = this.Objects.Where(p => p.Age > 18).ToList();
}
}
線this.MyList = new List<ChildObject>();
是扔一個Cannot implicitly convert type error
。 Filter()
方法也拋出一個類型錯誤。
我的理解是,父對象列表應允許使用子對象實例化,因爲該對象從父對象繼承。
製作'ParentCollection'公共 – Muctadir
你應該閱讀有關[協變和逆變(HTTP://博客。 msdn.com/b/csharpfaq/archive/2010/02/16/covariance-and-contravariance-faq.aspx)。 –