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

 

giugno 2007 Blog Posts

[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...

[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...

[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...

[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...

[ 70-553 ] – 1. Section 1 – 1. Dev application – 1 – Manage data (4)

Manage data in a .NET Framework application using .NET Framework 2.0 system types (System namespace) Generics:   fanno riferimento a classi e metodi che lavorano allo stesso modo su differenti tipi di oggetti. Quando vengono istanziati, necessitano sempre di un tipo di dati, cosi’ da dargli un “preciso significato”  e rappresentano l’implementazione in C# dei template del C++.   Uno dei vantaggi  dei generics è quello di far risparmiare sul boxing/unboxing:  la collezione generica “List” è l’equivalente di “ArrayList”, se ci mettiamo degli interi o dei double o un altro valueTypes non c’e’ boxing per inserire...

[70-553] – 1. Section 1 – 1. Dev application – 1 – Manage data (3)

Manage data in a .NET Framework application using .NET Framework 2.0 system types (System namespace) Gli attributi servono ad aggiungere informazioni, “metadati” per essere precisi, alle classi.    Si puo’ fare un po’ di tutto e con la tecnica detta System.Reflection si indaga il contenuto.  Ci sono attributi per tutti i gusti e dettagliano le informazioni in modo differente. Esempi:  ·         Per i parametri della PInvoke            [DllImport("user32.dll", ExactSpelling=false, SetLastError=false)]            extern static void SampleMethod();   ·         Per il marshalling:            [DllImport("Shell32", CharSet=CharSet.Auto)]            internal extern static int ExtractIconEx(               [MarshalAs(UnmanagedType.LPTStr)]               string lpszFile,       //size of the icon   ·         Per la...

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

Manage data in a .NET Framework application using .NET Framework 2.0 system types (System namespace) Reference Types:  sono gli oggetti, sono sempre passati come riferimento. Possono essere messi a null,  e quando si esegue una assegnazione in realtà  non viene fisicamente copiata la memoria, ma ridiretto il puntatore. Definisco  Punto come classe:         public class PuntoClass         {             private double _x, _y, _z;             public PuntoClass(double x1, double y1, double z1)             {                 updateCoords(x1, y1, z1);             }             public void printPunto(string name )             {                 Console.WriteLine("{0}  x = {1}, y ={2}, z = {3}",name, _x, _y, _z);             }             public void updateCoords(double...

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

Manage data in a .NET Framework application using .NET Framework 2.0 system types (System namespace) Value Types:  sono strutture o enumerati e vengono sempre passati per valore. Poichè si parla di “struct” e  non di “puntatori” non possono assumere il valore null. Per l’inizializzazione c’e’ un costruttore di default che permette di assegnare i  default.  E poi ognuno si puo’ creare i propri costruttori in cui assegnare i valori a tutte le variabili membro. Tutti sono derivati implicitamente dalla classe Object. I tipi di base: integer, double,bool, .. sono value types. Il riferimento alla teoria è: http://msdn2.microsoft.com/en-us/library/s1ax56ch(VS.71).aspx   ,  facciamo un esempio public struct PuntoStruct

[70-553] Quasi quasi mi aggiorno..

Ebbene si, era un po’ che ruminavo l’idea e oggi ho deciso di partire, mi aggiorno. Due anni fa ho completato il percorso MCSD, nel frattempo ho portato avanti un grosso progetto in C++ / C#, e ora.. ora ho in mente alcune modifiche/aggiunte e devo capire come sfruttare al meglio nuove possibilità . In pratica il dubbio “quanto si potrebbe fare meglio”: meglio inteso piu’ semplice, piu’ lineare, piu’ pulito si sta insinuando.. Quindi via.. seguo la traccia gentilmente messa a disposizione da: http://www.michaeleatonconsulting.com/MCSDUpgrade/Managedataina.NETFrameworkapplicationusi.html e mi faccio i miei “riassunti”. Non amo gli esempi complessi, ci riesco benissimo a complicarli...

 

 

Copyright © Bruna Gavioli