Interessantissima la presentazione di Anders Heiljsberg, papa' di Delphi e C# sulle nuove estensioni di C#. Molti ne avranno gia' parlato e si trova molta documentazione sulla rete per cui non mi voglio dilungare. Devo dire che mi ha fortemente entusiasmato il supporto ai generics, che mi ha meravigliato la presenta della parola chiave yield.
La parola chiave yield (da quanto ho capito) associata ad un return (yield return)consente ad una funzione di uscire come un normale return, ma di rientrare ad una successiva chiamata all'istruzione successiva allo yield. Tale costrutto consente di costruire le cosidette coroutines. Se applicato agli iteratori consente di implementare il fatidico MoveNext con due righe di codice: un ciclo for sulla collection interna e uno yield return dentro al ciclo. Ad ogni chiamata della funzione viene eseguito uno step del for interno!
Dulcis in fundo segnalo una piccola imprecisione (solo per ragioni di cronaca) di Heiljsberg. Per dimostare la velocita' di una collection tipizzata con generics Heilsberg ha costruito un ciclo for che riempiva una grande collection di test con degli oggetti e ha misurato il tempo impiegato usando una differenza di due DateTime.Now rilevate prima e dopo il ciclo. Ovviamente e' errato perche' un eventuale switch su un'altro processo eseguito dal sistema operativo durante il for, viene conteggiato come tempo di elaborazione del for stesso. Un benchmark corretto dovrebbe misurare i tick del processo!