In effetti le cose non stanno proprio come dicevo io, e Nothing non è uguale a null; dalla MSDN:
.Nothing
È possibile utilizzare la parola chiave Nothing per rappresentare il valore predefinito di qualsiasi tipo di dati. Se si assegna Nothing a un insieme di variabili, questo viene impostato sul valore predefinito per il relativo tipo dichiarato. Se nel tipo si trovano membri variabili, questi vengono tutti impostati ai valori predefiniti corrispondenti. Questa condizione è illustrata nell'esempio seguente:
Se la variabile è di un tipo di riferimento, ovvero una variabile oggetto, Nothing indica che la variabile non è associata ad alcun oggetto. Ad esempio:codice:Public Structure MyStruct Public Name As String Public Number As Short End Structure Dim S As MyStruct, I As Integer, B As Boolean S = Nothing ' Sets S.Name to Nothing, S.Number to 0. I = Nothing ' Sets I to 0. B = Nothing ' Sets B to False.
Quando si assegna la parola chiave Nothing a una variabile oggetto, tale variabile non farà più riferimento all'istanza di un oggetto. Se in precedenza la variabile ha fatto riferimento a un'istanza, l'istanza non viene automaticamente terminata quando si imposta la variabile su Nothing. L'istanza viene terminata e le risorse di memoria e di sistema associate ad essa vengono rilasciate solo quando non vengono più rilevati riferimenti attivi all'istanza.codice:Dim MyObject As Object MyObject = Nothing ' No object currently referred to.