Nothing (Visual Basic)

Stellt den Standardwert jedes beliebigen Datentyps dar.Bei Verweistypen lautet der Standardwert der null Reference.Für Werttypen Der Standardwert hängt davon ab, ob der Werttyp NULL-Werte zulässig sind.

HinweisHinweis

Für nicht auf NULL festlegbare Werttypen unterscheiden sich Nothing in Visual Basic aus null in C#.Wenn Sie in Visual Basic in einer Variablen eines Werttyps keine NULL-Werte zulassen auf Nothing, die Variable auf den Standardwert für den deklarierten Typ festgelegt werden.In C# nullWenn Sie eine Variable eines nicht auf NULL festlegbare Werttyp zuweisen, tritt ein Kompilierungsfehler auf.

Hinweise

Nothing stellt den Standardwert eines Datentyps dar.Der Standardwert hängt davon ab, ob die Variable von einem Werttyp oder ein Verweistyp ist.

Eine Variable eines Werttyps enthält den Wert direkt.Werttypen umfassen alle numerischen Datentypen Boolean, Char, Date, alle Strukturen und Enumerationen.Eine Variable eines Referenztyps enthält einen Verweis auf eine Instanz eines Objekts im Arbeitsspeicher.Verweistypen umfassen Klassen, Arrays, - Delegaten und die Zeichenfolgen.Weitere Informationen finden Sie unter Werttypen und Referenztypen.

Wenn eine Variable von einem Werttyp ist, hängt das Verhalten von Nothing davon ab, ob die Variable von einem Datentyp NULL-Werte zulässt.Um einen Werttyp, der auf NULL festgelegt werden ? darzustellen, fügen Sie einen Typnamen dem Modifizierer hinzu.Das Zuweisen von Nothing auf eine Variable, die NULL-Werte zulassen nullzu legt den Wert fest.Weitere Informationen und Beispiele finden Sie unter Auf NULL festlegbare Werttypen (Visual Basic).

Wenn eine Variable von einem Werttyp ist, der keine NULL-Werte zulässig sind, wird das Zuweisen von Nothing an den Standardwert für den deklarierten Typ fest.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

    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)

        Console.ReadKey()
    End Sub

    Public Structure TestStruct
        Public Name As String
        Public Number As Integer
    End Structure
End Module

Wenn eine Variable von einem Referenztyp ist, und weist Nothing in den variablen oder legt sie auf einen null Verweis vom Typ der Variablen zu.Eine Variable, die einem null Verweis festgelegt wird, ist keinem Objekt zugeordnet.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

Beim Überprüfen, ob eine Bezugs- NULL-Werte zulässt (oder Werttyp) - Variable nullist, verwenden Sie nicht = Nothing oder <> Nothing.Immer Verwendung Is Nothing oder IsNot Nothing.

Für Zeichenfolgen in Visual Basic ist die leere Zeichenfolge Nothing.Daher ist "" = Nothing true.

Im folgenden Beispiel werden Vergleiche mithilfe des Is-Operators und des IsNot-Operators veranschaulicht.

Module Module1
    Sub Main()

        Dim testObject As Object
        testObject = Nothing
        Console.WriteLine(testObject Is Nothing)
        ' Output: True

        Dim tc As New TestClass
        tc = Nothing
        Console.WriteLine(tc IsNot Nothing)
        ' Output: False

        ' Declare a nullable value type.
        Dim n? As Integer
        Console.WriteLine(n Is Nothing)
        ' Output: True

        n = 4
        Console.WriteLine(n Is Nothing)
        ' Output: False

        n = Nothing
        Console.WriteLine(n IsNot Nothing)
        ' Output: False

        Console.ReadKey()
    End Sub

    Class TestClass
        Public Field1 As Integer
        Private field2 As Boolean
    End Class
End Module

Wenn Sie eine Variable ohne Verwendung einer As-Klausel deklarieren und auf Nothing festlegen, ist die Variable vom Typ Object.Ein Beispiel hierfür ist Dim something = Nothing.In diesem Fall tritt ein Kompilierungsfehler auf, wenn Option Strict aktiviert ist und Option Infer deaktiviert ist.

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.

Nothing unterscheidet sich vom DBNull-Objekt, das eine nicht initialisierte Variante oder eine nicht vorhandene Datenbankspalte darstellt.

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)