(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Nothing (Visual Basic)

Stellt den Standardwert jedes beliebigen Datentyps dar. Bei Verweistypen ist der Standardwert ein null Verweis. Bei Werttypen hängt der Standardwert davon ab ob der Typ Nullwerte zulässt.

Hinweis Hinweis

Für nicht auf NULL festlegbare Werttypen unterscheiden sich Nothing in Visual Basic und null in C#. Wenn Sie in Visual Basic eine Variable eines Werttypes deklarieren, welche keine Nullwerte zulässt, und Nothing zuweisen, so wird die Variable mit dem Standardwert des Typs belegt.
In C# dagegen wird ein Kompilerfehler ausgelöst, wenn Sie versuchen einer Variablen eines Werttyps null zuzuweisen.

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

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

Wenn eine Variable ein Werttyp ist, hängt das Verhalten von Nothing davon ab ob der Werttyp Nullwerte zulässt.
Um einen Werttyp zu erhalten, der Nullwerte zulässt, fügen Sie ein ? an den Typnamen an.
Das Zuweisen einer Variablen auf Nothing setzt den Wert auf null.
Weitere Informationen und Beispiele finden Sie unter Auf NULL festlegbare Werttypen (Visual Basic).

Wenn eine Variable ein Werttyp ist, der keine Nullwerte zulässt, setzt Nothing den Standardwert für den Werttyp. Wenn der Typ Variablen enthält, werden ihnen die jeweiligen Standardwerte zugewiesen. Das folgende Beispiel veranschaulicht das Verhalten von Nothing für skalare Typen.


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 ein Referenztyp ist, weist Nothing der Variable einen Nullverweis zu.
Eine Variable, die auf einem Nullverweis festgelegt ist, ist keinem Objekt zugeordnet. Das folgende Beispiel veranschaulicht das.


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


Wenn Sie überprüfn möchten ob eine Variable (egal ob Wert- oder Verweistyp) null ist, verwenden Sie nie = Nothing oder <> Nothing.
Verwenden Sie immer Is Nothing oder IsNot Nothing.

In Visual Basic entspricht eine leere Zeichenfolge Nothing. Daher ist "" = Nothing immer 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 As-Klausel deklarieren und Nothing zuweisen, hat die Variable immer den Typ Object.
Ein Beispiel dafür ist Dim something = Nothing.
Ein Kompilerfehler wird auftreten, wenn Option Strict an- und Option Infer ausgeschalten ist.

Wenn Sie einer Variablen Nothing zuweisen, verweist die Variable nicht länger auf irgend eine Art einer Objektinstanz.
Wenn die Variable zuvor auf eine Instanz verwies, wird durch die Zuweisung von Nothing die Instanz selbst nicht verändert oder gelöscht. Die Zerstörung der Instanz, sowie das Freigaben 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 einen nicht initialisierten Typ oder eine nicht vorhandene Datenbankspalte darstellt.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft