Tipos de colección utilizados normalmenteCommonly Used Collection Types

Los tipos de colecciones son las variaciones comunes de las colecciones de datos, como tablas hash, colas, pilas, bolsas, diccionarios y listas.Collection types are the common variations of data collections, such as hash tables, queues, stacks, bags, dictionaries, and lists.

Las colecciones se basan en las interfaces ICollection, IList, IDictionary o en sus equivalentes genéricos.Collections are based on the ICollection interface, the IList interface, the IDictionary interface, or their generic counterparts. La interfaz IList y la interfaz IDictionary se derivan ambas de la interfaz ICollection; por lo tanto, todas las colecciones se basan en la interfaz ICollection directa o indirectamente.The IList interface and the IDictionary interface are both derived from the ICollection interface; therefore, all collections are based on the ICollection interface either directly or indirectly. En colecciones basadas en la interfaz IList (como Array, ArrayList o List<T>) o directamente en la interfaz ICollection (como Queue, ConcurrentQueue<T>, Stack, ConcurrentStack<T> o LinkedList<T>), cada elemento contiene un solo valor.In collections based on the IList interface (such as Array, ArrayList, or List<T>) or directly on the ICollection interface (such as Queue, ConcurrentQueue<T>, Stack, ConcurrentStack<T> or LinkedList<T>), every element contains only a value. En colecciones basadas en la interfaz IDictionary (como las clases Hashtable y SortedList, y las clases genéricas Dictionary<TKey,TValue> y SortedList<TKey,TValue>), o en las clases ConcurrentDictionary<TKey,TValue>, cada elemento contiene una clave y un valor.In collections based on the IDictionary interface (such as the Hashtable and SortedList classes, the Dictionary<TKey,TValue> and SortedList<TKey,TValue> generic classes), or the ConcurrentDictionary<TKey,TValue> classes, every element contains both a key and a value. La clase KeyedCollection<TKey,TItem> es única porque es una lista de valores con claves insertadas en los valores y, por lo tanto, se comporta como una lista y como un diccionario.The KeyedCollection<TKey,TItem> class is unique because it is a list of values with keys embedded within the values and, therefore, it behaves like a list and like a dictionary.

Las colecciones genéricas son la mejor solución para elementos fuertemente tipados.Generic collections are the best solution to strong typing. Sin embargo, si su lenguaje no admite genéricos, el espacio de nombres System.Collections incluye colecciones base, como CollectionBase, ReadOnlyCollectionBase y DictionaryBase, que son clases base abstractas que se pueden extender para crear clases de colección fuertemente tipadas.However, if your language does not support generics, the System.Collections namespace includes base collections, such as CollectionBase, ReadOnlyCollectionBase, and DictionaryBase, which are abstract base classes that can be extended to create collection classes that are strongly typed. Cuando se requiere un acceso eficaz a una colección multiproceso, utilice las colecciones genéricas del espacio de nombres System.Collections.Concurrent.When efficient multi-threaded collection access is required, use the generic collections in the System.Collections.Concurrent namespace.

Las colecciones pueden variar en función de cómo se almacenan los elementos, cómo se ordenan, cómo se realizan las búsquedas y cómo se realizan las comparaciones.Collections can vary, depending on how the elements are stored, how they are sorted, how searches are performed, and how comparisons are made. La clase Queue y la clase genérica Queue<T> proporcionan listas de tipo “el primero en entrar es el primero en salir”, mientras que la clase Stack y la clase genérica Stack<T> proporcionan listas de tipo “el último en entrar es el primero en salir”.The Queue class and the Queue<T> generic class provide first-in-first-out lists, while the Stack class and the Stack<T> generic class provide last-in-first-out lists. 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>.The SortedList class and the SortedList<TKey,TValue> generic class provide sorted versions of the Hashtable class and the Dictionary<TKey,TValue> generic class. El acceso a los elementos de Hashtable o de Dictionary<TKey,TValue> solo es posible mediante la clave del elemento, pero el acceso a los elementos de SortedList o de KeyedCollection<TKey,TItem> es posible mediante la clave o mediante el índice del elemento.The elements of a Hashtable or a Dictionary<TKey,TValue> are accessible only by the key of the element, but the elements of a SortedList or a KeyedCollection<TKey,TItem> are accessible either by the key or by the index of the element. Los índices de todas las colecciones son de base cero, excepto Array, que permite matrices que no son de base cero.The indexes in all collections are zero-based, except Array, which allows arrays that are not zero-based.

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 IEnumerable o IEnumerable<T>.The LINQ to Objects feature allows you to use LINQ queries to access in-memory objects as long as the object type implements IEnumerable or 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.LINQ queries provide a common pattern for accessing data; are typically more concise and readable than standard foreach loops; and provide filtering, ordering and grouping capabilities. Las consultas LINQ también pueden mejorar el rendimiento.LINQ queries can also improve performance. Para más información, vea LINQ to Objects (C#), LINQ to Objects (Visual Basic) y Parallel LINQ (PLINQ).For more information, see LINQ to Objects (C#), LINQ to Objects (Visual Basic), and Parallel LINQ (PLINQ).

TitleTitle DescripciónDescription
Colecciones y estructuras de datosCollections and Data Structures Describe los diversos tipos de colecciones disponibles en .NET Framework, incluidas las pilas, colas, listas, matrices y diccionarios.Discusses the various collection types available in the .NET Framework, including stacks, queues, lists, arrays, and dictionaries.
Tipos de las colecciones Hashtable y DictionaryHashtable and Dictionary Collection Types Describe las características de los tipos de diccionario basado en hash genéricos y no genéricos.Describes the features of generic and nongeneric hash-based dictionary types.
Tipos de colecciones ordenadasSorted Collection Types Describe las clases que proporcionan funcionalidad de ordenación para las listas y los conjuntos.Describes classes that provide sorting functionality for lists and sets.
GenéricosGenerics Describe la característica de genéricos, incluidas las colecciones, los delegados y las interfaces genéricos proporcionados por .NET Framework.Describes the generics feature, including the generic collections, delegates, and interfaces provided by the .NET Framework. Proporciona vínculos a la documentación de características para C#, Visual Basic y Visual C++, así como a tecnologías de apoyo como la reflexión.Provides links to feature documentation for C#, Visual Basic, and Visual C++, and to supporting technologies such as reflection.

ReferenciaReference

System.Collections

System.Collections.Generic

System.Collections.ICollection

System.Collections.Generic.ICollection<T>

System.Collections.IList

System.Collections.Generic.IList<T>

System.Collections.IDictionary

System.Collections.Generic.IDictionary<TKey,TValue>