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

Istruzione Dim (Visual Basic)

Operatore Is (Visual Basic)

Operatore IsNot (Visual Basic)

Concetti

Durata degli oggetti: come creare e distruggere oggetti (Visual Basic)

Durata in Visual Basic

Tipi di valori nullable (Visual Basic)