Quando ho bisogno di una collection con chiave-valore senza ombra di dubbio utilizzo la classe HastTable che ho descritto in questo
tip.
Il problema della classe HastTable è che adotta un "politica"
LIFO ovvero last in-firt out, che è da considerare se per caso utilizziamo la collection per esempio per memorizzare dei parametri , perchè se andiamo a scorrere con un ciclo la collection troveremo la coppia chiave-valore non come l'abbiamo inserita.
Esempio:
HashTable parametri = new HashTable();
parametri.add("Cognome","Caruso");
parametri.add("Nome","Marco");
parametri.add("Citta","Roma");
quindi se vado a scorrere questo hashtable come primo parametro di output otterrò Citta-Roma.
Quindi quando ho bisogno di una collection per memorizzare dei valori che dopo dovrò scorrere(per esempio per stamparli) utilizzo la classe
ListDictionary del namespace
System.Collection.Specialized, che a differenza del hashTable adotta una politica
FIFO, first in -firt out.
Quinid nell'esempio precendente quando scorro la collection la prima coppia sarà Cognome-Caruso.
Solo che l'uso di ListDictionary è consigliato per una collection non superiore ai 10 elementi.
Quindi ancora meglio è utilizzare la classe
HybridDictionary che in un primo momento utilizza un ListDictionary per memorizzare gli elementi e quindi sfruttare le maggiori prestazioni e se poi dovesse la collection dovesse aumentare sposta gli elementi in un HastTable.
Questa classe è molto utile quando non si sà il numero di elementi che verranno memorizzati.
Avete mai utilizzato queste classi? qualche feedback?