3 回答

TA貢獻1880條經(jīng)驗 獲得超4個贊
如果要創(chuàng)建一個公開顯示的動物集合,則不應(yīng)繼承該類List<T>,而應(yīng)該Collection<T>使用Collection該類名中的后綴。范例:AnimalCollection : Collection<Animal>。
框架設(shè)計指南對此提供了支持,更具體地說:
不要使用ArrayList,List<T>, Hashtable,或Dictionary<K,V>在公共API。使用Collection<T>, ReadOnlyCollection<T>, KeyedCollection<K,T>,或CollectionBase的亞型代替。請注意,僅在Framework 2.0版及更高版本中才支持通用集合。

TA貢獻2065條經(jīng)驗 獲得超14個贊
構(gòu)造函數(shù)不隨類一起繼承。您必須重新實現(xiàn)所需的構(gòu)造函數(shù)。
public class AnimalsCollection : List<Animal>
{
public AnimalsCollection(IEnumerable<Animal> animals) : base(animals) {}
}

TA貢獻1851條經(jīng)驗 獲得超5個贊
請記住,從List繼承的功能并不像您需要的那樣完全,許多成員不是虛擬的,因此覆蓋基本實現(xiàn)的唯一方法是使用new語法(而不是override)對其進行隱藏。
如果您需要開始在標(biāo)準列表操作中公開自定義行為,則可以在僅將內(nèi)部列表用于實際存儲的類型上實現(xiàn)所有列表接口。
這在很大程度上取決于您的最終要求。
- 3 回答
- 0 關(guān)注
- 660 瀏覽
添加回答
舉報