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

 

martedì 26 giugno 2007

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

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

Interfacce:

ICollection: è l’interfaccia per quasi tutte le liste: struttura l’interfaccia per inserire un elemento, per inserire un elemento in una posizione, per avere il conteggio e un enumerator che funziona come iteratore, che implementa l’intefaccia IEnumerator.

IComparer: è un’interfaccia che espone solo in metodo Compare per personalizzare il confronti fra gli oggetti della collezione.

IDictionary: è l’interfaccia per una collezione di coppie “chiave – valore”, prevede funzioni come Add, Contains, Clear e la scansione con un IDictionaryEnumerator.

IEnumerable è una interfaccia ha solo una funzione che ritorna un IEnumerator. Il bello di una classe che implementa questo tipo di interfaccia è che si puo’ utilizzare l’enumerator in un foreach rendendo il tutto molto molto semplice nell’uso.

Se si usa un IEnumerator è necessarissimo utilizzare  yield per restituire i valori.

   public class Mesi : System.Collections.IEnumerable

   {

      string[] _mesi = {"Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dec"};

      public System.Collections.IEnumerator GetEnumerator()

      {

         for (int i = 0; i < _mesi.Length; i++)

         {

            yield return _mesi[i];

         }

       }

    }

 

E si usa:

            Mesi mieimesi = new Mesi();

            foreach (string s in mieimesi)

                Console.Write(" {0} ", s);

 

IEqualityComparer: è una interfaccia per soli metodi: Equals e GetHashCode.

IHashCodeProvider: è un interfaccia per definire una propria funzione Hash

IList: E’ l’interfaccia per una lista di oggetti: Add, Insert, getIndexOf,Remove,

(ICloneable è l’interfaccia per ottenere una copia dell’oggetto)

[70-553] – 1. Section 1 – 1. Dev application – 1 – Manage data (5 fine!)

Manage data in a .NET Framework application using .NET Framework 2.0 system types (System namespace)

Eccezioni:  System.Exception è la classe base di tutte le eccezioni ed interrompono il flusso normale di lavoro dell’applicazione per un errore.  Un’eccezione viene gestita dall’applicazione o dal gestore degli errori predefiniti.

Riassumento le eccezioni si  intercettano con Try- Catch, dove il catch puo’ essere catch(1), catch(2)... per distinguere a priori su diversi tipi di eccezioni e prenderle in modo gerarchizzato...

 Dopo il blocco Try-Catch il Finally viene sempre eseguito, in genere utilizzato per liberare risorse.

C’e’ un ApplicationException che indica un errore irreversibile, ma la guida consiglia di derivare le proprie eccezioni da System.Exception.

Per generare un’eccezione si usa:   throw new myException(..parametri); 

http://msdn2.microsoft.com/it-it/library/system.exception(VS.80).aspx

 

Boxing/Unboxing. E’ la tecnica con cui si passano da ValueType a ReferenceType. 

object  o = i;                 BOX:  dove i è il classico intero o un altro valueType

int i = (int)o;       UNBOX: per ottenere il valore indietro.

 

Ma per sapere cosa c’e’ dentro ad un oggetto..          if (o is int)....

 

http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=38

 

 

TypeForwardedToAttribute: specifica un tipo che si trova in un altro assembly e serve per riorganizzare la posizione delle classi negli assembly senza dover modificare i chiamanti e quindi l’intera applicazione L’idea è semplice

 stato iniziale:

·         In un assembly A c’e’ una classe X con i suoi metodi

·         Altri assembly dell’applicazione  utilizzano la classe.

Dopo la ristrutturazione:

·         In un assembly B c’e’ la classe X con i suoi metodi, stesso namespace

·         Dall’assembly A è stata CANCELLATA la classe X

·         Nell’assembly A è stata inserito il riferimento all’assembly B

·         Nell’assembly A è stata messa una direttiva del tipo:

 

    [assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(mionamespace.X)]

 

·         Nell’applicazione vengono messi i due nuovi assembly A e B

·         L’applicazione non viene ricompilata, continua a pensare di guardare la libreria A, quest'ultima fa poi la ridirezione a B.           

 J A me  ricorda il concetto della dichiarazione extern, anche se quella era solo per la compilazione, non per il runtime.

 

http://msdn2.microsoft.com/en-us/library/system.runtime.compilerservices.typeforwardedtoattribute.aspx

 

 

Copyright © Bruna Gavioli