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
Konzepte
Objektlebensdauer: Erstellen und Zerstören von Objekten (Visual Basic)