Blog Stats
  • Posts - 16
  • Articles - 0
  • Comments - 122
  • Trackbacks - 31

 

Friday, June 29, 2007

[70-553] – 1. Section 1 – 1. Dev application – 3 – Generic collections

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());

 

 

Copyright © Bruna Gavioli