Oggi ho dovuto mettere le mani su una classe VB6 (non scritta da me). All'interno di questa classe ho trovato un codice che mi ha lasciato davvero perplesso: ne faccio un esempio
Private Sub Command1_Click()
CalcolaValore UCase("stringa qualsiasi")
End Sub
Private Sub CalcolaValore(buffer() As Byte)
'Qui faccio qualcosa...
End Sub
Di primo acchito, mi sono domandato come un codice di questo tipo potesse funzionare; dovrebbe dare mismatch error non appena si entra nella Command1_Click. Invece il codice che ho scritto funziona!! Provate a rimuovere la chiamata UCase() e a lasciare solo la stringa e il codice smetterà di funzionare. Possiamo anche provare con Trim ed LCase e vedremo che il nostro codice continuerà ad andare alla grande. Da qui la domanda... ma cosa contiene buffer? Beh, contiene un'array di Byte che rappresenta la nostra stringa (trasformata con ucase o lcase o trim) in formato UNICODE!!
Ora, il significato di questo post qual'è? Quello di meditare ancora una volta come .net ci abbia liberati da queste "magie" che potevano indurre in errori molto difficili da individuare.