Che entrambi funzionino nessuno lo mette in dubbio, ma che siano la scelta migliore è un altro discorso. Sarà una mia opinione, ma il "saltare" da una parte all'altra non è buona abitudine: si può fare tutto con i cicli, ed è più rigoroso.
Per gli ArrayList, mi spiace deluderti, ma forse sei rimasto un po' indietro. Dalla versione 2005, VB supporta i tipi Generics, che permettono di creare, tra le altre cose, liste a tipizzazione forte. Tali liste possono comunque contenere qualsiasi tipo di dato, ma ogni loro istanza è dedicata e ottimizzata per la gestione di UN tipo di dato. Ad esempio,
Codice sorgente - presumibilmente C# / VB.NET |
Dim L As New List(Of Int16)
|
è una lista di interi a 16 bit: ogni elemento è un int16 ed occupa esattamente 16 bits.
Un ArrayList, al contrario, può contenere solo oggetti. Il fatto che non faccia distinzione implica che ogni dato deve essere convertito in un oggetto, quindi in un tipo reference. Se si tratta già di un oggetto, deve subire comunque un cast verso il tipo Object; se si tratta di un tipo value, deve subire il boxing che lo rende reference. Quindi, oltre a sprecare un tot di bytes in più per ogni elemento della lista, impiega anche di più a elaborare e gestire i dati. Se non ci credi, puoi cronometrare qualsiasi cosa con uno Stopwatch, e vedrai che le liste generics sono sempre più performanti degli arraylist (con gli Int32, ad esempio, sono circa 6 volte più veloci, oltre ad occupare meno memoria).