Home Page Home Page Tips & Tricks Come usare un array che automaticamente si ridimensioni in base agli elementi inseriti ?

Come usare un array che automaticamente si ridimensioni in base agli elementi inseriti ?


Fin quando era in uso il linguaggio C/C++ operazioni di questo tipo erano molto comuni anche se abbastanza potenti e nel contempo molto scomode.
Si usano frequentemente strutture dati avanzate come liste linkate, doppiamente linkate, alberi binari e così via. Quindi non si sa a priori quanti elementi bisognerà inserire nella struttura ma lo si sa man mano che sono disponibili per esempio leggendo da un file di dimensioni variabili oppure ricevendo dati da un socket.

Vita più semplice con il .NET Framework e la classe ArrayList


Finalmente i programmatori di Microsoft ci hanno pensato e hanno reso disponibile questa classe particolarmente evoluta che ci permette di ottenere lo stesso risultato e quindi strutture dati che si ingrandiscono man mano che vengono inseriti elementi.
La classe è: ArrayList
Il namespace in cui è definita : System.Collections

La comodità sta, oltre che nella serie di metodi utili che offre questa classe, nel fatto che possono essere inseriti in questa struttura diversi elementi quindi può diventare un array di stringhe così come un array di interi. Ma non solo, nello stesso array possono essere inserite anche tipi di dati eterogenei come interi e contemporaneamente stringhe.

Un semplice esempio...



Ecco come si può fare in C# a creare un array di interi:

int numero=3;
ArrayList vettore_interi=new ArrayList(10);
vettore_interi.Add(numero);
int p=(int)vettore_interi[0];

come vedete viene definito vettore_interi usando un costruttore che specifica che l'array deve iniziare con una capacità di 10 posizioni, viene inserito un intero e poi viene restituito ad una variabile "p" con un classico cast esplicito. Chiaramente è necessario il cast perchè l'ArrayList prende e restituisce oggetti quindi di tipo Object.


Allo stesso modo funziona un array di stringhe:

string stringa="Albero";
ArrayList vettore_stringhe=new ArrayList(10);
vettore_stringhe.Add(stringa);
string t=(string)vettore_stringhe[0];


E combinando i due esempi creiamo un array che contenga tipi di dati eterogenei:

int numero=3;
ArrayList vettore_interi=new ArrayList(10);
vettore_interi.Add(numero);
vettore_interi.Add("CIAO");

//Stampa System.Int32
Console.WriteLine(vettore_interi[0].GetType().ToString());
//Stampa System.String
Console.WriteLine(vettore_interi[1].GetType().ToString());
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5