Tipos de colección utilizados normalmente

Actualización: noviembre 2007

Los tipos de colecciones son las variaciones comunes de las recolecciones de datos, como tablas hash, colas, pilas, diccionarios y listas.

Las colecciones se basan en las interfaces ICollection, IList e IDictionary o en sus homólogos genéricos. Las interfaces IList e IDictionary derivan de la interfaz ICollection; por consiguiente, todas las colecciones se basan directa o indirectamente en esta interfaz. En colecciones basadas en la interfaz IList (como Array, ArrayList o List<T>) o directamente en la interfaz ICollection (como Queue, Stack o LinkedList<T>), cada elemento contiene sólo un valor. En colecciones basadas en la interfaz IDictionary (como las clases Hashtable y SortedList o las clases genéricas Dictionary<TKey, TValue> y SortedList<TKey, TValue>), cada elemento contiene una clave y un valor. La clase KeyedCollection<TKey, TItem> es única porque se compone de una lista de valores con claves incrustadas, de modo que se comporta como una lista y como un diccionario.

Las colecciones genéricas son la mejor solución al establecimiento inflexible de tipos. No obstante, en caso de que el lenguaje en cuestión no admita genéricos, debe observarse que el espacio de nombres System.Collections incluye colecciones base, como CollectionBase, ReadOnlyCollectionBase o DictionaryBase, que son clases base abstractas que pueden extenderse para crear clases de colección con establecimiento inflexible de tipos.

Las colecciones pueden variar en función de cómo se almacenen los elementos, cómo se ordenen, cómo se realicen en ellas las búsquedas y cómo se efectúen las comparaciones. La clase Queue y la clase genérica Queue<T> proporcionan las listas de tipo "primero en entrar, primero en salir", mientras la clase Stack y la clase Stack<T> genérica proporcionan las listas de tipo "último en entrar, primero en salir". La clase SortedList y la clase genérica SortedList<TKey, TValue> proporcionan versiones ordenadas de la clase Hashtable y de la clase genérica Dictionary<TKey, TValue>. Sólo se puede obtener acceso a los elementos de Hashtable o Dictionary<TKey, TValue> mediante su clave, mientras que a los elementos de SortedList o KeyedCollection<TKey, TItem> se puede obtener acceso tanto mediante la clave como mediante el índice. Los índices de todas las colecciones son de base cero, con una excepción, Array, que permite matrices que no sean de base cero.

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.

En esta sección

Referencia

Secciones relacionadas

  • Colecciones y estructuras de datos
    Describe los diversos tipos de colecciones disponibles en .NET Framework, incluidas las pilas, colas, listas, matrices y estructuras.

  • Genéricos en .NET Framework
    Describe la característica de genéricos, incluidas las colecciones, delegados e interfaces genéricos proporcionados por .NET Framework. Proporciona vínculos a la documentación sobre características para C#, Visual Basic y Visual C++, así como a las tecnologías de apoyo, como la reflexión.