Wird die CollectionBase-Klasse weiterhin unterstützt?

8

Ich möchte eine Klasse erstellen, die von CollectionBase erbt, aber es scheint, dass es LINQ-Erweiterungen nicht unterstützt!

Wird es immer noch unterstützt? Oder gibt es eine alternative Lösung?

    
Homam 18.04.2011, 14:56
quelle

2 Antworten

23

Es wird immer noch unterstützt , aber es ist veraltet. Sie sollten immer die in der System.Collections.Generic oder der System.Collections.ObjectModel Namespaces stattdessen.

Sie können auch von einer der generischen Sammlungen erben, um Ihre eigene, stark typisierte Sammlung zu erstellen. Und es wird volle Unterstützung für LINQ haben, da sie bereits IEnumerable<T> implementieren.
Entweder List<T> oder Collection<T> sind gute Optionen für Ihren Fall.

Vermeiden Sie die nicht generischen Sammlungen wie CollectionBase , ArrayList und HashTable wenn möglich. Es gibt eine Leistungseinbuße bei deren Verwendung, und sie bieten (falls überhaupt!) Nur wenige Vorteile gegenüber den generischen Versionen, die in neueren Versionen des Frameworks eingeführt wurden.

    
Cody Gray 18.04.2011, 15:00
quelle
3

Linq-Erweiterungen werden für IEnumerable<T> (Generic) und CollectionBase (nicht-generisch) erbt nicht davon. Aus diesem Grund können Sie Linq nicht darauf verwenden.

Verwenden Sie stattdessen System.Collections.ObjectModel.Collection<T> .

    
decyclone 18.04.2011 15:01
quelle