Cómo: Agregar, eliminar y recuperar los elementos de una colección (Visual Basic)
La clase Collection de Visual Basic contiene funcionalidad integrada, que permite agregar, eliminar y recuperar elementos.
Es posible que desee agregar un elemento a una colección en cuanto se crea o se obtiene el elemento, por ejemplo un nuevo cliente.
Puede desear eliminar un elemento de una colección cuando ya no pertenece a la colección, por ejemplo cuando un empleado deja su compañía.
Es posible que desee recuperar un elemento de una colección para editar su contenido, por ejemplo cambiar el número de teléfono de un estudiante.
Nota
Los objetos Collection actualizan sus números de índice numéricos automáticamente cuando agrega y elimina elementos. Por ello, el índice numérico de un elemento determinado puede cambiar a menudo. Por ello, cuando guarde un valor de índice numérico, no espere recuperar el mismo elemento posteriormente en el programa. Para este propósito utilice claves.
Para agregar un elemento a una colección
Use el método Add y especifique el elemento por su Key.
object.Add(Item, Key [, {Before | After}])
Por ejemplo, para agregar un objeto de orden de trabajo a una colección de órdenes de trabajo utilizando como clave la propiedad ID de la orden de trabajo, puede realizar la siguiente llamada:
workOrders.Add(woNew, woNew.ID)
La llamada anterior supone que la propiedad ID es una cadena. Si es un número (por ejemplo, un entero Long ), utilice su método ToString para convertirlo en el valor String necesario para el argumento Key.
workOrders.Add(woNew, woNew.ID.ToString())
El uso de una clave es opcional. Si no desea asociar una clave al objeto de su colección, puede agregarlo sin una clave.
workOrders.Add(woNew)
Puede utilizar los argumentos Before y After para mantener una colección ordenada de objetos. El miembro que se agrega se coloca en la colección antes o después del miembro identificado por el argumento Before o After respectivamente. Por ejemplo, si estable Before igual a 1, se inserta un elemento al principio de la colección porque los objetos Collection están basados en 1.
workOrders.Add(woNew, woNew.ID, 1)
De forma similar, el argumento After agrega un elemento después del índice especificado. El siguiente ejemplo agrega un tercer elemento.
workOrders.Add(woNew, woNew.ID,,2)
Se puede especificar un valor para Before o para After, pero no para ambos.
Para eliminar un elemento de una colección
Use el método Remove y especifique el elemento por su Index o su Key.
object.Remove({Index | Key})
El argumento Index es la posición del elemento que desea eliminar. El argumento Key es la misma cadena que ha utilizado para agregar el elemento a la colección. Si la clave del tercer elemento de una colección es "W017493", puede utilizar cualquiera de las dos instrucciones siguientes para eliminarlo.
workOrders.Remove(3) workOrders.Remove("W017493")
Para eliminar todos los elementos de una colección
Utilice el método Clear.
object.Clear()
El método Clear vacía la colección.
Para recuperar un elemento de una colección
Use la propiedad Item y especifique el elemento por su Index o su Key.
variable = object.Item({Index | Key})
Igual que con el método Remove, el argumento Index es la posición del elemento en la colección y el argumento Key es la cadena utilizada al agregar el elemento. Con el mismo ejemplo del método Remove, cualquiera de las instrucciones siguientes recupera el tercer elemento de la colección:
woCurrent = workOrders.Item(3) woCurrent = workOrders.Item("W017493")
Nota
Si utiliza números como claves, debe utilizar sus métodos ToString para convertirlos en las cadenas antes de pasarlos al método Add o Remove o a la propiedad Item. Un objeto de Visual Basic Collection supone siempre que un número es un índice, en vez de una cadena de clave.
Si conoce la clave en el tiempo de compilación, puede utilizar alternativamente el operador (!) de acceso a diccionario para tener acceso a un elemento de la colección sin incluir la clave entre comillas o paréntesis. La llamada anterior se puede escribir del modo siguiente.
woCurrent = workOrders!W017493