Quando abbiamo presentato gli array, abbiamo anche sottolineato che in realtà questi rappresentano strutture piuttosto antiquate. Gli array infatti sono stati una delle prime strutture create nei linguaggi di programmazione poiché con il loro utilizzo è possibile risolvere molti problemi. Con il tempo però sono state create delle nuove strutture, più potenti e versatili, che non hanno bisogno di assunti particolari o semplicemente sono più maneggevoli.
Oggi, dopo anni e anni di sviluppo informatico, nel framework .NET è possibile raggruppare tutte le strutture in 2(+1) categorie. Il primo insieme contiene tutte le strutture in cui vengono creati degli indici automaticamente associati agli elementi. In questo insieme ovviamente troviamo gli array, ma non solo; tra le principali strutture infatti troviamo le liste, che possono essere presentate come la versione moderna degli array, diciamo un array 2.0. Nella maggior parte dei casi è preferibile utilizzare questa seconda struttura perché più potente e malleabile, ma anche perché permette di semplificare molto il programma. Come abbiamo detto, anche le liste utilizzano indice automaticamente associati agli elementi inizializzati all’interno della struttura, ma a differenza degli array (ed è questa caratteristica che permette la semplificazione del codice), l’allocazione è dinamica perciò non c’è bisogno di specificare la lunghezza della lista al momento dell’inizializzazione come invece avviene per gli array.
La seconda grande categoria di strutture presenti nel framework .NET sono le Dictionary. Tali strutture permettono di lavorare con moltissimi dati; ciò è permesso dal fatto che gli indici non vengono assegnati automaticamente, ma al momento dell’assegnazione di un valore a una locazione di memoria, il programmatore oltre a specificare tale valore, specifica anche una chiave. Perciò la grande novità è rappresentata dalla specificazione di questo elemento, la “chiave”, che essendo associata manualmente agli elementi, permette di richiamare velocemente l’allocazione di memoria in cui sono stati assegnati i valori. Immaginiamo, ad esempio, di voler creare un dataset contenete tutte le informazioni dei libri presenti in una biblioteca, quindi si voglio registrare titolo, autore, casa editrice, genere, sottogeneri, anno di stampa ecc. Se utilizzassimo una lista occuperemmo moltissimo spazio e inoltre sarebbe molto difficoltoso compiere qualunque azione con questa tipo di struttura. Se invece utilizzassimo una dictionary, potremmo utilizzare il codice ISBN, univoco per ogni libro, come chiave; attraverso questo codice perciò sarà possibile ottenere tutte le informazioni di cui abbiamo bisogno. Attraverso questo semplicissimo esempio è possibile capire che il guadagno dal punto di vista computazionale, che si ottiene utilizzando strutture con chiavi rispetto a strutture con indici, è enorme.
Si potrebbe pensare che le due tipologie di struttura appena descritte sono assolutamente indipendenti l’una dall’altra, cioè che non esiste un “anello di congiunzione”. In realtà non è così; esiste infatti un terzo tipo di strutture in cui oltre alla specifica manuale da parte del programmatore di una chiave associata agli elementi, si hanno anche degli indici automaticamente associati agli stessi elementi. In questa terza categoria di strutture troviamo la SortList, una struttura estremamente potente e versatile, che proprio per questo motivo viene usata quasi sempre, anche quando il suo utilizzo potrebbe risultare eccessivo.
Concludiamo dicendo che a differenza degli array, tutte le strutture che sono state analizzate oggi, che risultano essere, come già detto, più moderne, sono uniformi in tutti i linguaggi di programmazione disponibili su Visual Studio.
