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:
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.
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:
Dim MyObject As Object
MyObject = Nothing   ' No object currently referred to.
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.
.