Nothing (Visual Basic)
Rappresenta il valore predefinito di qualsiasi tipo di dati.
Note
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. Questo comportamento viene illustrato nell'esempio seguente per i tipi scalari.
Module Module1
Public Structure testStruct
Public name As String
Public number As Short
End Structure
Sub Main()
Dim ts As testStruct
Dim i As Integer
Dim b As Boolean
' The following statement sets ts.name to Nothing and ts.number to 0.
ts = Nothing
' The following statements set i to 0 and b to False.
i = Nothing
b = Nothing
Console.WriteLine("ts.name: " & ts.name)
Console.WriteLine("ts.number: " & ts.number)
Console.WriteLine("i: " & i)
Console.WriteLine("b: " & b)
End Sub
End Module
Se la variabile è di un tipo di riferimento, un valore Nothing indica che la variabile non è associata ad alcun oggetto. La variabile ha un valore null. Nell'esempio che segue viene illustrato quanto descritto.
Module Module1
Sub Main()
Dim testObject As Object
' The following statement sets testObject so that it does not refer to
' any instance.
testObject = Nothing
Dim tc As New TestClass
tc = Nothing
' The fields of tc cannot be accessed. The following statement causes
' a NullReferenceException at run time. (Compare to the assignment of
' Nothing to structure ts in the previous example.)
'Console.WriteLine(tc.field1)
End Sub
Class TestClass
Public field1 As Integer
' . . .
End Class
End Module
Per testare le variabili di tipo nullable e di riferimento con i valori Nothing, utilizzare l'operatore Is o l'operatore IsNot. I confronti in cui viene utilizzato il segno di uguale, ad esempio someVar = Nothing, restituiscono sempre Nothing. Nell'esempio seguente vengono illustrati confronti in cui vengono utilizzati gli operatori Is e IsNot.
Module Module1
Sub Main()
Dim testObject As Object
testObject = Nothing
' The following statement displays "True".
Console.WriteLine(testObject Is Nothing)
Dim tc As New TestClass
tc = Nothing
' The following statement displays "False".
Console.WriteLine(tc IsNot Nothing)
Dim n? As Integer
' The following statement displays "True".
Console.WriteLine(n Is Nothing)
n = 4
' The following statement displays "False".
Console.WriteLine(n Is Nothing)
n = Nothing
' The following statement displays "False".
Console.WriteLine(n IsNot Nothing)
End Sub
Class TestClass
Public field1 As Integer
Dim field2 As Boolean
End Class
End Module
Per ulteriori informazioni ed esempi, vedere Tipi di valori nullable (Visual Basic).
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 a essa vengono rilasciate solo quando il Garbage Collector non rileva più riferimenti attivi.
Vedere anche
Riferimenti
Operatore IsNot (Visual Basic)
Concetti
Durata degli oggetti: come creare e distruggere oggetti (Visual Basic)