Attualità e Information Technology

August 30, 2006

Primi due capitoli…

Filed under: IT, .NET, MCTS, 70-536

Prime due lezioni del primo capitolo (Framework Fundamentals) del libro di preparazione all’esame 70-536 per la certificazione MCTS:

  1. Using Value Types
  2. Using Common Reference Types

Nulla di speciale. Panoramica sui tipi valore e i tipi referenza.
In due parole, i tipi valore memorizzano direttamente il valore (il tutto è registrato nello stack), mentre i tipi referenza memorizzano l’indirizzo dello spazio di memoria dove è salvato il valore (il tutto è registrato nello heap).
Per quanto riguarda il discorso Value Types, nel framework 2.0 è stato introdotto il tipo Nullable. Lo si deve “applicare” ad un tipo valore (ergo ad uno dei tipi valore già presenti nel framework o ad una nostra struttura) e permette così che la variabile associata possa accettare null come assegnazione. Una variabile dichiarata come Nullable ha due proprietà ad-hoc: HasValue e Value, che permettono rispettivamente di verificare se a tale variabile è stato assegnato un valore e di restituire tale valore.
Esempio:

Nullable<int> a = null;
//oppure
int? a = null;

if (a.HasValue) Console.WriteLine(”La variabile a vale {0}”, a.Value);
else Console.WriteLine(”Alla variabile a non è stato assegnato alcun valore”);

Vi è poi un rapido confronto tra strutture e classi. Mentre le classi sono tipi referenza, le strutture sono tipi valore. Proprio per questo sono più performanti, anche se sono pochi i casi in cui sono preferibili alle classi.
Una struttura dovrebbe rispecchiare, per essere usata correttamente, i seguenti criteri:

  • Rappresentare logicamente un singolo valore
  • Una volta istanziato avere una dimensione inferiore ai 16 byte
  • Non deve cambiare dopo la creazione
  • Non deve essere castato a un tipo referenza

Passando invece ai reference type, intanto c’è da annotare che System.String è sì un tipo referenza, ma i suoi metodi/proprietà si comportano in maniera tale da poterlo gestire come un tipo valore. Tanto per intenderci l’uguaglianza (==) tra due stringhe restituisce true se i “contenuti” sono uguali e non, come per tutti gli altri tipi referenza, se puntano alla stessa area dati.
Inoltre il tipo stringa è immutabile, nel senso che se ad una stringa concateniamo altri pezzi con il classico operatore +, verranno create tante stringe temporanee invece che “aggiornare” semplicemente il valore della stringa. Proprio per evitare ciò esiste la classe StringBuilder, che permette di creare stringe dinamiche.

Anche le eccezioni sono tipi referenza, ma non c’è molto da dire se non ricordare al solito di utilizzarle propriamente e catturare eccezioni il più dettagliate possibili.

Infine prima cosa veramente interessante che non avevo ancora visto: la classe System.Array ha il metodo statico Sort, che ordina l’array che gli si passa. Non l’avevo mai visto per due motivi: in genere uso molto più frequentemente ArrayList o classi simili e i casi in cui ho adoperato un Array non ho mai avuto bisogno di ordinarlo e tra i metodi direttamente lanciabili dalla variabile di tipo Array, Sort non è presente. Come dicevo infatti trattasi di metodo statico.
Insomma, dopo le prime due lezioncine ho finalmente letto qualcosa di nuovo che non sapevo ;)

Speriamo andando avanti diventi più interessante…

Technorati tags , ,

AddThis Social Bookmark Button

Comments »

The URI to TrackBack this entry is: http://oplero.blogsome.com/2006/08/30/primi-due-capitoli/trackback/

No comments yet.

RSS feed for comments on this post.

Leave a comment

Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>


   

Get free blog up and running in minutes with Blogsome | Theme designs available here