Share via


Colecciones en .NET Framework con Visual Basic

.NET Framework ofrece clases especializadas para el almacenamiento y la recuperación de datos. Estas clases proporcionan compatibilidad con pilas, colas, listas y tablas hash. La mayoría de las clases de colección implementan las mismas interfaces. Si es necesario, puede crear sus propias clases de colección implementando estas interfaces.

Debe determinar qué tipo de colección es el más adecuado para sus necesidades.

Diferencias entre las clases de colección de Visual Basic y .NET Framework

Las clases de colección de .NET Framework se definen en los espacios de nombres System.CollectionsSystem.Collections.Generic, System.Collections.Specialized y System.Collections.ObjectModel. Las diferencias principales entre Visual Basic y clases de colección de .NET Framework incluyen lo siguiente:

  • Base de índice. Las colecciones de .NET Framework están basadas en cero, mientras que la colección de Visual Basic está basada en uno. Esto significa que los elementos de una colección de Visual Basic tienen valores de índice comprendidos entre 1 y el valor de la propiedad Count, mientras que los elementos de una colección de .NET Framework tienen valores de índice que van desde 0 hasta uno menos que el valor de la propiedad Count de la colección.

  • Tipo de elemento. La colección de Visual Basic admite elementos de tipo Object. Estas colecciones no tienen seguridad de tipos, es decir, se puede agregar un elemento de cualquier tipo de datos. Esto normalmente reduce el rendimiento porque los elementos del tipo de datos Object se deben convertir en su verdadero tipo.

    Algunas de las colecciones de .NET Framework también tienen elementos de tipo Object, pero muchas otras están fuertemente tipadas, lo que significa que admiten elementos de un tipo específico, lo que les atribuye seguridad de tipos y normalmente permite conseguir un rendimiento óptimo.

  • Elementos con clave. La colección de Visual Basic permite especificar una clave cuando se le agrega un elemento. La clave es un valor de cadena único que se puede utilizar después para tener acceso a ese elemento concreto. Las colecciones .NET Framework varían con respecto a las claves. Algunas admiten claves y otras no.

Clases System.Collections

Las clases del espacio de nombres System.Collections no almacenan los elementos como objetos de un tipo específico, sino como objetos de tipo Object.

En la tabla siguiente se muestran algunas de las clases que se utilizan comúnmente:

Clase

Descripción

ArrayList

Implementa la interfaz IList utilizando una matriz cuyo tamaño aumenta dinámicamente cuando es necesario.

BitArray

Administra una matriz compacta de valores de bit, que se representan como valores Boolean, donde True indica que el bit está activado (1) y False indica que el bit está desactivado (0).

Hashtable

Representa una colección de pares de clave y valor que se organizan por código hash de la clave.

Queue

Representa una colección de objetos primero en entrar, primero en salir (FIFO).

Stack

Representa una colección simple no genérica de objetos último en entrar, primero en salir (LIFO).

Clases System.Collections.Generic y System.Collections.ObjectModel

Los espacios de nombres System.Collections.Generic y System.Collections.ObjectModel proporcionan tipos genéricos que permiten crear colecciones con establecimiento inflexible de tipos y especificar el tipo de datos de los elementos cuando se crean.

En la tabla siguiente se muestran algunas de las clases que se utilizan comúnmente:

Clase

Descripción

Collection<T>

Proporciona la clase base para una colección genérica.

Dictionary<TKey, TValue>

Representa una colección de pares de clave y valor que se organizan por claves.

KeyedCollection<TKey, TItem>

Proporciona la clase base abstracta para una colección cuyas claves están incrustadas dentro de los valores.

LinkedList<T>

Representa una lista doblemente vinculada.

LinkedListNode<T>

Representa un nodo en una clase LinkedList<T>. Esta clase no puede heredarse.

List<T>

Implementa la interfaz IList<T> utilizando una matriz cuyo tamaño aumenta dinámicamente cuando es necesario.

Queue<T>

Representa una colección de objetos primero en entrar, primero en salir (FIFO).

SortedDictionary<TKey, TValue>

Representa una colección de pares de clave y valor que se ordenan por claves.

SortedList<TKey, TValue>

Representa una colección de pares de clave y valor que se ordenan por claves según la implementación de la interfaz IComparer<T> asociada.

Stack<T>

Representa una colección último en entrar, primero en salir (LIFO) de tamaño variable con instancias del mismo tipo arbitrario.

ReadOnlyCollection<T>

Proporciona la clase base para una colección genérica de sólo lectura.

Clases System.Collections.Specialized

El espacio de nombres System.Collections.Specialized proporciona clases de colección especializadas y con establecimiento inflexible de tipos, como colecciones de sólo cadena y diccionarios híbridos y de lista vinculada.

En la tabla siguiente se muestran algunas de las clases que se utilizan comúnmente:

Clase

Descripción

CollectionsUtil

Crea colecciones que omiten el uso de mayúsculas y minúsculas en cadenas.

HybridDictionary

Implementa la interfaz IDictionary utilizando ListDictionary mientras la colección es pequeña; a continuación, cambia a Hashtable cuando la colección aumenta.

ListDictionary

Implementa la interfaz IDictionary utilizando una lista vinculada única. Se recomienda para las colecciones que normalmente contienen 10 elementos o menos.

NameObjectCollectionBase

Proporciona la clase base abstracta para una colección de claves de cadena y valores de objeto asociados a los que se puede tener acceso con la clave o con el índice.

NameValueCollection

Representa una colección de claves de cadena y valores de cadena asociados a los que se puede tener acceso con la clave o con el índice.

OrderedDictionary

Representa una colección de pares de clave y valor que se ordenan por claves o por índices.

StringCollection

Representa una colección de cadenas.

StringDictionary

Implementa una tabla hash con la clave y el valor con establecimiento inflexible de tipos de forma que sean cadenas en lugar de objetos.

Vea también

Referencia

Collection

Conceptos

Colecciones en Visual Basic

Otros recursos

Continuar con Visual Basic