Nothing (Visual Basic)

Stellt den Standardwert jedes beliebigen Datentyps dar.

Hinweise

Wenn Nothing einer Variable zugewiesen wird, wird diese auf den Standardwert für ihren deklarierten Typ festgelegt. Wenn der Typ Variablenmember enthält, werden für alle die jeweiligen Standardwerte festgelegt. Im folgenden Beispiel wird dieses für skalare Typen veranschaulicht.

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

Wenn es sich bei einer Variablen um einen Verweistyp handelt, besagt der Wert Nothing, dass die Variable mit keinem Objekt verknüpft ist. Die Variable verfügt über einen NULL-Wert. Das folgende Beispiel veranschaulicht dies.

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

Verwenden Sie den Is-Operator oder den IsNot-Operator, um Verweis- und Nullable-Typ-Variablen auf Nothing-Werte zu testen. Der Vergleich mithilfe des Gleichheitszeichens, someVar = Nothing, ergibt beispielsweise immer Nothing. Im folgenden Beispiel werden Vergleiche mithilfe des Is-Operators und des IsNot-Operators veranschaulicht.

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

Weitere Informationen und Beispiele finden Sie unter Auf NULL festlegbare Werttypen (Visual Basic).

Wenn Nothing einer Objektvariablen zugewiesen wird, verweist diese Variable nicht mehr auf eine Objektinstanz. Wenn die Variable zuvor auf eine Instanz verwies, wird mit Nothing die Instanz selbst nicht beendet. Die Beendigung der Instanz sowie die Freigabe des benötigten Speicherplatzes und der benötigten Systemressourcen erfolgt erst dann, wenn der Garbage Collector (GC) keine aktiven Verweise mehr findet.

Siehe auch

Referenz

Dim-Anweisung (Visual Basic)

Is-Operator (Visual Basic)

IsNot-Operator (Visual Basic)

Konzepte

Objektlebensdauer: Erstellen und Zerstören von Objekten (Visual Basic)

Lebensdauer in Visual Basic

Auf NULL festlegbare Werttypen (Visual Basic)