2013-04-05 22 views
6

Qual è il valore predefinito di una variabile dichiarata come dinamica, ad es. private dynamic banana;?Valore predefinito del tipo dinamico?

Posso fare affidamento sulla funzione default() quando il tipo viene determinato in fase di runtime?

Il motivo per cui ho bisogno di trovare il valore predefinito è che dichiaro un membro dinamico di una classe che voglio impostarlo una volta (ma non come readonly), quindi usarlo molte volte.

Come si verifica se la variabile dinamica è stata impostata su un valore diverso dal valore predefinito senza sapere quale sarà il tipo di runtime?

Google si avvicinò con niente su questo: S

Grazie in anticipo.

+1

È possibile controllare il tipo con 'default (dyanmic.GetType())' – gdoron

+0

perché non si utilizza una proprietà readonly del campo Tipo dinamico e backing di tipo oggetto? In questo modo è possibile verificare in modo nullo il campo di supporto. –

+0

@AkashKava, non sto impostando il valore nel costruttore, quindi non posso usare solo la lettura:/ – Sinker

risposta

5

È null.

dynamic blah; 
Console.Write(blah); // crash 
Console.Write(blah.GetType()); // NullRef 

.. è questo che intendevi?

+1

'Console.Write' non si arresta in modo anomalo quando viene passato' null', semplicemente non stampa nulla. http://msdn.microsoft.com/en-us/library/zcwe8sfx.aspx –

+0

> @EdS., Viene visualizzato il seguente errore: > {"La chiamata è ambigua tra i seguenti metodi o proprietà: 'System.Console .Write (stringa) 'e' System.Console.Write (char []) '"} – Sinker

+4

@Sinker: Questo non è un crash –

Problemi correlati