|
Improve type safety and application performance by using generic collections (System.Collections.Generic namespace) |
Si tratta delle nuove collezioni, basate sui tipi generici e che quando vengono instanziate “acquisiscono” i tipi. Sono quindi implicitamente piu’ sicure di quelle tradizionali perchè una collezione di un certo tipo potrà contenere solo elementi di quel tipo, non elementi differenti. Nelle collezioni tradizionali questo non era vero, erano omogenee solo per il tipo di base (Object), ma in pratica potevano contenere pere/mele/rinoceronti in modo indistinto. Le collezioni sono anche piu’ performanti perchè non fanno boxing/unboxing con un bel risparmio di risorse.
Le interfacce sono le stesse delle altre collezioni: ICollection, IComparer, IDictionary, IEnumerable, IEnumerator, IEqualityComparer, IList, ma sono generiche es. IList<T>.
System.Collection.Generics System.Collection
Dictionary Hashtable
List Arraylist
Queue Queue
Stack Stack
SortedList SortedList
C’e’ anche una LinkedList , lista bilincata, i cui elementi sono LinkedListNode.
LinkedList<PuntoStruct> mieiPunti = new LinkedList<PuntoStruct>();
mieiPunti.AddFirst(new PuntoStruct(1, 1, 1));
mieiPunti.AddLast (new PuntoStruct(3,3, 3));
//inserisco nella seconda posizione un nuovo punto
LinkedListNode<PuntoStruct> pRef = mieiPunti.First;
mieiPunti.AddAfter(pRef, new PuntoStruct(2, 2, 2));
foreach (PuntoStruct p in mieiPunti)
Console.WriteLine(p.ToString());