Questo post nasce dal fatto che troppo spesso vedo codice non sfruttato, del tipo, un ArrayList per memorizzare 4 valori stringa, o peggio, una generic List<String> per memorizzare magari un semplice array di stringhe. Mi è sembrato quindi opportuno fare il punto della situazione, con questo post, nel quale voglio semplicemente dire che il Namespace System.Collections ... è un Namespace e non una classe, quindi magari al suo interno possiamo trovare diversi oggetti ... e non solo ArrayList e List<T>.
| Collezione | Caratteristiche | Deriva da | Quando va usata |
| ArrayList | le dimensioni posso variare, puo' contenere oggetti, ed infine, utilizza gli indici per accedere agli items | System.Collections | non conosco l' oggetto che voglio memorizzare |
| SortedList | Una HashTable con funzioni di sort | System.Collections | ho una coppia chiave/valore e voglio anche ordinarla |
| Queue | Collezione di oggetti con gestione FIFO (First in First out) | System.Collections | gestisce le code di oggetti |
| Stack | Collezione di oggetti con gestione LIFO (Last in First out) | System.Collections | come sopra |
| HashTable | Collezione di coppie (chiave-valore) ricercabili per nome | System.Collections | ho una grossa lista di coppie chiave/valore |
| BitArray | Collezione di valori booleani (true/false) | System.Collections | devo memorizzare un elenco di valori booleani |
| StringCollection | Collezione di stringhe con dimensioni variabili | System.Collections | devo lavorare con elenchi di valori stringa e non so quanti sono |
| StringDictionary | Collezione di chiavi/valori di tipo Stringa | System.Collections | |
| ListDictionary | Collezione di oggetti, per piccole quantità | System.Collections | devo usare una HashTable ma gli items sono pochi |
| HybridDictionary | Ibrido tra Hashtable e ListDictionary | System.Collections | devo usare una HashTable ma non conosco il numero di items |
| NameValueCollection | come la HashTable ma fornisce anche l' indice dell' Item | System.Collections | devo usare una HashTable ma voglio anche conoscere l' indice di un item |
Ogni correzione è ben accetta.