En Visual Basic existen varias formas de organizar conjuntos de datos:
Arreglos estándar (Dim arr(10) As Integer): tamaño estático, acceso rápido por índice, no se puede expandir dinámicamente.
Collection (colección de objetos): tamaño dinámico, puede almacenar elementos de cualquier tipo (pero sin tipado estricto), acceso por clave e índice, soporta For Each.
ArrayList (en VB.NET): colección obsoleta, almacena objetos del tipo Object, no soporta genéricos (Generic), requiere conversiones de tipo (casting).
List(Of T) (en VB.NET): colección tipada, tamaño dinámico, acceso rápido, soporta LINQ, segura por tipo de datos.
Ejemplos de uso:
Arreglo estándar:
Dim numbers(4) As Integer numbers(0) = 10
Collection:
Dim coll As New Collection() coll.Add("manzana") coll.Add(123) For Each item In coll Debug.Print(item) Next
ArrayList:
Dim arrList As New ArrayList() arrList.Add("abc") arrList.Add(123)
List(Of T):
Dim list As New List(Of Integer)() list.Add(10) list.Add(20) For Each num As Integer In list Console.WriteLine(num) Next
¿Cuál es el principal problema que puede surgir al trabajar con ArrayList en comparación con List(Of T)?
Respuesta: ArrayList almacena elementos como Object, por lo que se requiere una conversión de tipo explícita (casting) al acceder a los elementos, lo que aumenta la posibilidad de recibir un InvalidCastException en tiempo de ejecución. List(Of T) proporciona tipado estricto en el momento de la compilación, excluyendo tales errores.
Dim arrList As New ArrayList() arrList.Add(100) ' Dim s As String = arrList(0) ' Error en tiempo de ejecución Dim n As Integer = CType(arrList(0), Integer) ' OK
Historia
En el sistema financiero se utilizaban activamente los arreglos estándar para almacenar datos de tamaño dinámico. Al superar el tamaño previamente asignado, los arreglos "se recortaban", lo que resultaba en la pérdida de transacciones durante picos de carga.
Historia
Al trabajar con ArrayList se añadieron cadenas y números a la colección, y luego se intentó calcular la suma de los elementos. Como resultado, la aplicación falló con una excepción durante la conversión de tipo, ya que no se pueden sumar cadenas con números.
Historia
Se utilizó Collection para almacenar clases de pedidos, pero no se verificaron los tipos de los elementos. En un módulo se agregó por error texto en lugar de un objeto de pedido, lo que causó un fallo en toda la lógica de negocio al intentar invocar métodos de un objeto inexistente.