Forse a chi usa C# e
viene da un background di programmatore C/C++ sembrerà normalissimo, ma per un
programmatore VB non avere errori di compilazione sulla prima di queste due
righe é piuttosto strano:
Dim B As Boolean = NothingMessageBox.Show(B.ToString)
Se avvio comparirà una messagebox che reciterà "false". Quindi Nothing
castato a Boolean é l'equivalente di false? Forse, ma, allora perché la
riga:
MessageBox.Show(DirectCast(Nothing, Boolean).ToString)
Invece genera un eccezione in esecuzione?
Decompilando con Reflector (in IL, perché in VB vengono entrambe tradotte con
le prime due linee) noto che l'inizio di queste espressioni é:
L_0000: ldc.i4.0 L_0001: stloc.0 L_0002: ldloca.s flag1
Pur non capendo niente di IL mi pare di vedere che il mio Nothing é...
Sono giorni che a tratti
ottengo dei problemi di caricamento di alcuni assembly. Per ignoti motivi non
vengono caricate le versioni giuste. Ad un certo punto una istruzione interrompe
l'esecuzione e senza alcuna plausibile motivazione esce un'eccezione di tipo
System.IO.FileLoadException che mi dice che la versione dell'assembly XXXX non
corrisponde a quella.... blablabla... Uso visual studio con una soluzione
che contiene 6 progetti. Ho provato a ricercare con la funzione "trova" di
windows tutte le occorrenze di quell'assembly nel mio file system ed eliminarle,
ma niente da fare il problema persiste a cancellazioni, riavvii e addirittura
ri-creazione dei progetti (sì, anche...