Sulla base della mia risposta a this question, voglio controllare qualcosa sulla mia comprensione della prossima dynamic
tipo per C# 4.Il tipo "dinamico" può variare in modo sicuro in una raccolta generica <dynamic>?
In questo caso, abbiamo una collezione che rappresenta campi di un record tirato da una tabella di database sconosciuta . Il codice meno recente (pre.Net 4) richiede elementi di tipo hold di tipo Object
. Meriti di una tale raccolta a parte, mi chiedo cosa succede quando si cambia Object
a dynamic
.
Da un lato, mi aspetto che dal momento che tutte le cose per i tipi dinamici sono state elaborate in fase di esecuzione, tutto dovrebbe andare bene fintanto che il programmatore non commette errori di battitura sul tipo previsto di un particolare oggetto nella collezione.
D'altra parte, mi chiedo sulla parola "tutto" nella frase precedente. Il runtime potrebbe forse memorizzare i risultati della cache al primo accesso a una proprietà dinamica, causando il fallimento delle chiamate successive che utilizzano tipi diversi?
Questo è un po 'quello di cui ero preoccupato. Nel mio semplice esempio è abbastanza facile per il runtime sapere che sono tipi diversi. Ma la memorizzazione nella cache avviene e quindi, se dovessi fare un sacco di questi, sarebbe possibile solo imbattersi in un caso limite. In realtà, però, non penso che sarà un problema per il caso che è stata posta questa domanda, che è bene sapere. –
@Joel: Certo, potrebbero esserci dei bug nella politica di miss cache. Se ne trovi qualcuno, fammi sapere! :) –