Dynamic
Il Framework 4.0 introduce un nuovo tipo, il tipo Dynamic.
L'introduzione di questo tipo avvicina C# ai paradigmi della programmazione dinamica, migliorando sia la programmazione Office sia l'interoperabilità con oggetti dinamici scritti, per esempio in IronRuby, IronPython o JScript.
Tutto cio è possibile utilizzando la keyword Dynamic, vediamo un piccolo esempio :
E' importante comprendere che una variabile dinamica viene elaborata completamente a runtime è per questo che visual studio non permette l'utilizzo di intellisense, ne tantomeno il compilatore puo verificare se il codice scritto è pertinente o meno vediamo uno screenshot :
Molti di voi che non hanno mai sentito parlare di dynamic e/o dynamic lookup si staranno chiedendo a che serve quella keyword se la stessa operazione possiamo eseguirla utilizzando la keyword var? Vediamo le differenze con un'altro esempio :
Come potete notare, è possibile assegnare ad "a" qualsiasi valore di qualsiasi tipo ogni qual volta si vuole a differenza della variabile "b" che una volta inizializzata a 3, è del tutto tipizzata (intero).
I tipi dinamici si possono utilizzare non solo attraverso la dichiarazione di variabili, ma anche ad esempio come tipi o parametri di una funzione :
I Dynamic sono uno strumento potentissimo che è stato introdotto in C#,ricordo che in vb.net operazioni del genere sono possibili dichiarando variabili senza tipo e disabilitando Option strict, ma non ha solo pregi, infatti questo tipo di programmazione include due problematiche principali :
1) Il calo delle prestazioni : tutto le operazione legate i tipi dinamici vengono definiti a run-time con un pesante calo prestazionale da parte del programma;
2) Inesistenza di riferimenti da parte dell'ambiente di sviluppo : come dicevo prima visual studio non è in grado di creare un'elenco intellisense per i tipi dinamici.
Detto questo resta a voi liberare la fantasia e sviluppare dinamicamente (e ricordate, quando è necessario!!) i vostri progetti!
Spero al piu presto di inserire mini progetti riguardanti dynamic e interoperabilità con Office, python e correlati ;)
Stay Tuned! ;)