Visto che al Real Code Day abbiamo parlato di collezioni tipizzate e, in particolare, delle interfacce che una collezione deve implementare e della classe astratta CollectionBase, mi sembrava interessante proporre questa tabellina riassuntiva che mette in evidenza la corrispondenza dei tipi relativi al namespace System.Collection della versione 1.x del framework e i nuovi tipi Generics della versione 2.0.
In particolare mi piace sottolineare la corrispondenza che esiste tra CollectionBase e Collection<T>
Il tipo List<T> corrisponde all'ArrayList tipizzato nella versione Generics. La collezione generica per la realizzazione di collezioni tipizzate con la versione 2.0 del framework è Collection<T> che equivale alla precedente CollectionBase (anche se non è astratta) e che utilizza un List<T> internamente per contenere l'elenco di dati.
Collection<T> implementa le interfacce ICollection, IList, IEnumerable, ICollection<T>, IList<T>, IEnumerable<T> ed è espressamente pensata per essere la classe base per le collezioni tipizzate nella versione 2.0. List<T> implementa le stesse interfacce ed un tipo che espone una marea di metodi per l'ordinamento, la ricerca e la manipolazione dei dati in esso contenuti. Collection<T> ha una interfaccia più snella e funge da wrapper per l'oggetto List<T> incapsulato.
Come dice anche il buon Andrea, l'interfaccia di List<T> è dichiarata da Microsoft stessa troppo ricca per le API pubbliche, quindi per proprietà e metodi (argomenti, return value) bisognerebbe usare sempre Collection<T>.
System.Collections | System.Collections.Generic |
Le interfacce | |
IEnumerator | IEnumerator<T> |
IEnumerable | IEnumerable<T> |
ICollection | ICollection<T> |
IList | IList<T> |
IDictionary | IDictionary |
Le collezioni ICollection<T> | |
Stack | Stack<T> |
Queue | Queue<T> |
Le collezioni IList<T> | |
System.Array | System.Array [*] |
ArrayList | List<T> |
StringCollection | List<string> |
--- | LinkedList<T> |
CollectionBase | Collection<T> |
ReadOnlyCollectionBase | ReadOnlyCollection<T> |
Le collezioni IDictionary<T> | |
HashTable, DictionaryBase, HybridDictionary, ListDictionary | Dictionary<K,V> |
StringDictionary | Dictionary<string,string> |
SortedList | SortedDictionary<K,V> |
NameObjectCollectionBase | SortedDictionary<string,object> |
NameValueCollection | SortedDictionary<string,string[]> |
Comparazione | |
System.IComparable | IComparable<T> |
Comparer | Comparer<T> |
[*] In System.Array sono stati aggiunti numerosi metodi generici per elaborare in modo tipizzato i vettori.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Immagini animate per l'UpdateProgress, il 4 aprile 2007 alle 15:38
- Disponibile la CTP di SandCastle, il 31 luglio 2006 alle 00:55
- TestDriven.NET e Code Coverage anche per le versioni Express, il 31 gennaio 2006 alle 10:30
- NUnit 2.2.6, il 23 gennaio 2006 alle 17:50
- Non tutti sanno dell'esistenza di IRepeatInfoUser, il 12 febbraio 2005 alle 00:16