Compartir a través de


Cuándo utilizar colecciones genéricas

En general, es recomendable utilizar colecciones genéricas porque se obtiene la ventaja inmediata de la seguridad de tipos sin necesidad de derivar de un tipo de colección base e implementar miembros específicos de los tipos. Además, por lo general los tipos de colección genéricos tienen un mejor rendimiento que los tipos de colección no genéricos correspondientes (y mejor que el de los tipos derivados de tipos de colección base no genéricos) cuando los elementos de la colección son tipos de valor, porque con los genéricos no hay necesidad de realizar conversiones boxing de los elementos.

En el caso de los programas destinados a .NET Framework versión 4 o posterior, debe usar las clases de colección genéricas en el espacio de nombres System.Collections.Concurrent cuando varios subprocesos puedan agregar o quitar elementos de la colección simultáneamente.

Los siguientes tipos genéricos corresponden a los tipos de colección existentes:

Tipos adicionales

Hay varios tipos de colección genéricos que no tienen homólogos no genéricos. Algunas de ellas son:

LINQ to Objects

La característica LINQ to Objects permite usar consultas LINQ para obtener acceso a los objetos en memoria mientras el tipo de objeto implemente la interfaz System.Collections.IEnumerable o System.Collections.Generic.IEnumerable<T>. Las consultas LINQ proporcionan un modelo común para el acceso a datos; suelen ser más concisas y legibles que los bucles foreach estándar, y proporcionan capacidades de filtrado, ordenación y agrupación. Las consultas LINQ también pueden mejorar el rendimiento. Para obtener más información, vea LINQ to Objects y Parallel LINQ (PLINQ).

Funcionalidad adicional

Algunos de los tipos genéricos tienen funcionalidades que no se encuentran en los tipos de colección no genéricos. Por ejemplo, la clase List<T>, que corresponde a la clase ArrayList no genérica, tiene una serie de métodos que aceptan delegados genéricos, como el delegado Predicate<T> que le permite especificar métodos para buscar en la lista, el delegado Action<T> que representa métodos que actúan en cada uno de los elementos de la lista, y el delegado Converter<TInput, TOutput> que le permite definir conversiones entre tipos.

La clase List<T> le permite especificar sus propias implementaciones de interfaces genéricas de IComparer<T> para ordenar la lista y buscar en ella. Las clases SortedList<TKey, TValue> y SortedDictionary<TKey, TValue> también tienen esta capacidad. Además, estas clases permiten especificar comparadores en el momento de crear la colección. De forma similar, las clases Dictionary<TKey, TValue> y KeyedCollection<TKey, TItem> permiten al usuario especificar sus propios comparadores de igualdad.

Vea también

Conceptos

Genéricos en .NET Framework

Otros recursos

Tipos de colección utilizados normalmente