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

 

Thursday, June 28, 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());

[70-553] – 1. Section 1 – 1. Dev application – 2 – Group of data(2)

Manage a group of associated data using collections (System.Collections namespace)

Classi: Le classi non fanno che implementare le interfacce.:

ArrayList, implementa:  IList, ICollection, IEnumerable, ICloneable

Hashtable: implementa IDictionary, ICollection, IEnumerable, ICloneable .. e qualche altra interfaccia non di liste per la serializzazione e deserializzazione;

CollectionBase: è una classe astratta per collezioni fortemente tipizzate. Implementa IList, ICollection, IEnumerable.

Per usarla si deve creare una propria classe derivando da quella..

ReadOnlyCollectionBase: è una classe astratta per una collezione che, dopo la fase di creazione, diventa read-only

DictionaryBase: è la classe astratta per un dizionario: insieme di coppie chiave-valore.

DictionaryEntry: è la classe per definire la coppia chiave – valore.

Queue: è una lista tradizionale (FIFO), implementa ICollection, IEnumerable, Icloneable.

SortedList: è una sorta di dizionario ordinato per chiave, accessibile sia per chiave che per indice. Implementa:  ICollection, IEnumerable, ICloneable

BitArray: gestisce in modo compatto un array di bit. Implementa ICollection, IEnumerable, ICloneable.

Stack: è la classica lista LIFO. Implementa:  ICollection, IEnumerable, ICloneable

Comparer: serve per paragonare due oggetti, il costruttore puo’ prende la cultura come parametro. C’e’ anche una bella classe CaseInsensitiveComparer bello per paragonare le stringhe

 

 

Copyright © Bruna Gavioli