Cuándo utilizar colecciones genéricas

Actualización: noviembre 2007

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.

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:

LINQ to Objects

La característica LINQ to Objects le permite usar consultas LINQ para tener acceso a los objetos en memoria mientras el tipo de objeto implemente IEnumerable o 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, consulte LINQ to Objects.

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 SortedDictionary<TKey, TValue> y SortedList<TKey, TValue> también tienen esta capacidad y, además, permite especificar los comparadores cuando se crea la colección. De forma parecida, las clases Dictionary<TKey, TValue> y KeyedCollection<TKey, TItem> le permiten especificar sus propios comparadores de igualdad.

Vea también

Conceptos

Información general sobre los genéricos de .NET Framework

Otros recursos

Tipos de colección utilizados normalmente