Historia de la pregunta
La colección List(Of T) fue introducida en VB.NET para reemplazar colecciones obsoletas, proporcionando seguridad de tipo, modificación dinámica del tamaño y acceso rápido a elementos por índice. El uso de listas permite estructurar datos, trabajar con elementos tipificados y evitar errores comunes asociados con colecciones no genéricas.
Problema
Los principiantes a menudo no comprenden cómo acceder correctamente a los elementos de la lista, cómo agregar, modificar y eliminar elementos, y qué sucederá si se utilizan índices incorrectos (por ejemplo, salir del rango de la lista). Esto conduce a excepciones durante la ejecución del programa.
Solución
En List(Of T), los elementos se indexan desde cero. El acceso a un elemento se realiza por índice tanto para lectura como para escritura. Si el índice no es válido, se produce una excepción ArgumentOutOfRangeException. Los métodos de la colección permiten trabajar de manera segura con los elementos:
Ejemplo de código:
Imports System.Collections.Generic Dim numbers As New List(Of Integer)() numbers.Add(10) numbers.Add(20) Dim first As Integer = numbers(0) ' Obtener el elemento con índice 0 numbers(1) = 99 ' Establecer el elemento con índice 1 ' Eliminación numbers.RemoveAt(0) ' Eliminar por índice
Características clave:
Si accedemos a un índice que es igual a la cantidad de elementos en List(Of T), ¿obtendremos el último elemento?
No. La indexación comienza desde 0, y el índice máximo permitido es (Count - 1). Al acceder a un índice igual a Count, se producirá un error ArgumentOutOfRangeException.
¿Se puede agregar un elemento en el medio de List(Of T) sin eliminar datos existentes?
Sí, mediante el método Insert:
numbers.Insert(1, 42) ' Insertará 42 en la segunda posición, desplazando los demás a la derecha.
¿Es peligroso modificar la colección List(Of T) durante la iteración usando For Each?
Es peligroso. Esto dará lugar a InvalidOperationException. Para tales operaciones, usa For con índice o primero forma una lista para la eliminación.
En el programa se itera sobre List(Of T) usando For Each y se eliminan elementos dentro de la iteración.
Ventajas:
Desventajas:
El código itera sobre los elementos de final a comienzo usando For y elimina los objetos correspondientes.
Ventajas:
Desventajas: