Una dictionary è una struttura dati che permette di memorizzare coppie di valori sotto forma di chiave-valore. Ogni chiave deve essere univoca, e per ogni chiave c'è un valore associato. I dictionary sono simili alle
Collections, ma offrono maggiore flessibilità e funzionalità aggiuntive, hanno la scomodità di essere in una libreria esterna da richiamare.
Dichiarazione
Volendo utilizzare una dichiarazione
Early Binding dobbiamo prima di tutto creare il collegamento alla librerie del programma, le troviamo nel menù:
Strumenti --> Riferimenti selezionando Microsoft Scripting Runtime
Fatto questo possiamo inserire un oggetto dictionary all'interno del nostro codicie, in questo modo:
o in modo più compatto:
Volendo utilizzare una dichiarazione di tipo
Late Binding sarà di questo tipo:
Comparazione
Una proprietà importante da settare dopo aver creato l'oggetto è il CompareMode: deve essere impostato con il Dictionary vuoto.
- vbBinaryCompare: è l'opzione di default, il confronto è case-sensitive;
- vbTextCompare: con questa opzione maiusclole e minuscole sono considertate uguali.
Proprietà
Azione | Come fare |
---|
Tipo di comparazione della chiavi | dict.CompareMode |
Aggiungere elemento | dict.Add Key, Value dict(Key) = Value |
Cambiare valore ad una chiave | dict(Key) = Value |
Togliere elemento | dict.Remove Key |
l'array delle chiavi | dict.Keys |
l'array degli elementi | dict.Items |
Accedere all'elemento | Value = dict(Key) |
Verifica se l'elemento esiste | dict.Exists(Key) |
Numero degli elementi | dict.Count |
Svuotare | dict.RemoveAll |
|
Inserire/accedere ad un elemento
Oltre che utilizzando il metodo Add in questo modo:
dict.Add key:="Anna", item:=100
possiamo avere lo stesso risultato scrivendo:
dict("Anna") = 100
In questo modo il valore della voce sarà inserito se non esiste, modificato se esiste già
Scorrere gli elementi
Scorrendo le chiavi
Scorrendo gli indici:
Differenze fra Dictionary e Collection
Proviamo a chiarire le differenze fra
Collection e Dictionary (che possono sembrare molto simili) e quando è meglio usare l'uno o l'altro tipo di dati:
- hanno velocità superiori alle Collection, specie utilizzando l'Early Binding;
- le chiavi sono obbligatorie e possono essere di qualsiasi tipo di dato;
- è previsto un metodo nativo per verificare se una chiave esiste (Exists) senza usare una funzione aggiuntiva;
- le chiavi sono sempre accessibili facilmente tramite la proprietà Keys
- è possibile modificare un valore associato ad una chiave senza cancellare e reinserire il valore;
- l'iserimento dei valori tramite assegnazione rende il codice più chiaro;
- gli elmenti possono essere cancellati tutti senza dover cancellare l'oggetto e ricrearlo.