Tempo di vacanze, a chi non sapesse cosa fare in queste afose e calde giornate consiglio la visione di questo webcast sulle nuove features di C# 4.0(ce lo troveremo nel .Net Framework 4.0).
Riassumendo:
-Dynamic Typing : un nuovo insieme di classi all’interno del framework 4.0(chiamato Dynamic Language Runtime o DLR) che ci permette di rendere più “dynamic” la scrittura e l’esecuzione del nostro codice, esempio pratico:
…
dynamic variabile = 7;
variabile.Metodo();
…
il compilatore non si lamenterà più del fatto che Metodo() non appartiene alla classe Int32(il valore 7), ma verranno compilate per noi un’insieme di istruzioni(creazioni di classi e chiamate a metodi del runtime DLR, la keyword dynamic dichiara che variabile è un tipo dynamic) che descrivono quale metodo dovrà essere chiamato a runtime e su quale istanza(sollevando un’eccezione in caso il metodo non esista, funziona anche con le proprietà chiaramente). Per vederne una prima potenzialità, vi consiglio questo webcastdove il dynamic typing aiuta a scrivere codice più dichiarativo per leggere un file xml con la classe XElement e XmlNode. Il Dynamic Typing diventa molto utile nell’interoperabilità con COM permettendoci di scrivere codice più compatto,chiaro e con meno errori.
-Optional Parameter : così come fanno gli sviluppatori Visual Basic, ora anche in C# sarà possibile specificare dei parametri opzionali per i metodi e in fase di invocazione specificare un ordine diverso da quello posizionale basandosi sul nome ti tale parametro, esempio:
public class OP
{
public void Metodo(int a = 3,string b = “default”){…}
}
….
Op variabile = new OP();
variabile.Metodo(); //legale verranno usati i default
variabile.Metodo(b : “ciao” , a : 5); //vengono specificati in modo nominale i parametri
variabile.Metodo(5);// a sarà 5 e per b verrà usato il default
-Covarianza e controvarianza : …esempio:
Date le classi
public class Animale
{
}
public class Giraffa : Animale
{
}
…
IEnumerable<Giraffa> giraffe = …
IEnumerable<Animale> animali = giraffe;
….
Le ultime 2 istruzioni avrebbero provocato un errore in compilazione con C# 3.0 cosa che è legale con C# 4.0 grazie alla covarianza. La covarianza e controvarianza sono disponibili per interfaccie e delegate generics con reference type. Il compilatore considera queste istruzioni “safe” grazie al fatto che nella creazione ad esempio dell’interfaccia, siamo noi(e per le interfaccie standard con IEnumerable<T> è già stato fatto nelle BCL) attraverso delle nuove keywords in o out a decidere se queste conversioni sono legali o no, esempio dell’uso di out:
public interface IMyInterface<out T>
{
}
….
IMyInterface<Giraffa> giraffe = ….
IMyInterface<Animale> animali = giraffe ;
….
Se non avessi dichiarato con la keyword out l’argomento generico T il compilatore avrebbe sollevato un errore di compilazione.
Questa era solo una sintesi tutti questi argomenti nascondono un bel pò di materiale da studiarsi per benino con calma ;-)
Intanto vi lascio il linkal webcast e vi auguro una buona estate e delle buone vacanze(per chi ha la fortuna di farle come il sottoscritto :-D).