2011-04-18 10 views
8

Quiero crear una clase que herede desde CollectionBase, ¡pero parece que no admite extensiones LINQ!¿La clase CollectionBase aún es compatible?

¿Sigue siendo compatible? ¿O hay una solución alternativa?

+2

¿Por qué no simplemente implementar IEnumerable ? – Tejs

+0

@Tejs: porque tengo alguna funcionalidad de validación y los encapsularía. – Homam

+1

CollectionBase parece anticuado, pregenéricos. ¿Por qué querrías usarlo? –

Respuesta

23

Todavía es compatible con, pero está obsoleto. En su lugar, siempre debe preferir utilizar las colecciones definidas en los espacios de nombres System.Collections.Generic o System.Collections.ObjectModel.

También puede heredar de una de las colecciones genéricas para crear su propia colección personalizada con caracteres fuertes. Y tendrá soporte completo para LINQ, ya que ya implementan IEnumerable<T>.
O List<T> o Collection<T> son buenas opciones para su caso.

Evite las colecciones no genéricas como CollectionBase, ArrayList y HashTable si es posible. Hay una penalización en el rendimiento al usarlos, y ofrecen pocas ventajas (si las hubiera) sobre las versiones genéricas que se introdujeron en las versiones más recientes del marco.

+1

Comentario de [qtg] (https://stackoverflow.com/users/7368376/qtg) incorrectamente pasado como [ respuesta] (https://stackoverflow.com/a/47669778/5292302) * "¿Puede proporcionar algún enlace con respecto a obsoleto en MSDN oficial?" * –

Cuestiones relacionadas