2011-04-18 117 views
8

我想創建一個繼承自CollectionBase的類,但它似乎不支持LINQ擴展!仍然支持CollectionBase類嗎?

它還支持嗎?還是有其他解決方案?

+2

爲什麼不簡單地實現IEnumerable ? – Tejs 2011-04-18 14:58:51

+0

@Tejs:因爲我有一些驗證功能,我會封裝它們。 – Homam 2011-04-18 14:59:52

+1

CollectionBase似乎是過時的,前仿製藥。你爲什麼要使用它? – 2011-04-18 15:00:47

回答

23

它仍然是支持,但它已過時。您應該始終傾向於使用在System.Collections.GenericSystem.Collections.ObjectModel名稱空間中定義的集合。

您也可以繼承其中一個泛型集合以創建自己的強類型集合。它將完全支持LINQ,因爲它們已經實現了IEnumerable<T>
List<T>Collection<T>是您的案例的好選擇。

如果可能,請避免使用非通用集合,如CollectionBase,ArrayListHashTable。使用它們會導致性能損失,並且它們在較新版本的框架中引入的通用版本上幾乎沒有優勢(如果有的話)。

+1

評論由[qtg](https://stackoverflow.com/users/7368376/qtg)錯誤地傳遞爲[回答](https://stackoverflow.com/a/47669778/5292302)*「您能否提供任何有關官方MSDN過時的鏈接?」* – 2017-12-06 08:26:19