Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Stellt den Standardwert eines beliebigen Datentyps dar. Bei Referenztypen ist der Standardwert der null Verweis. Bei Werttypen hängt der Standardwert davon ab, ob der Werttyp nullfähig ist.
Hinweis
Bei Nicht-Null-Wertetypen Nothing unterscheidet sich Visual Basic von null C# ab. Wenn Sie in Visual Basic eine Variable eines nicht nullablen Werttyps auf <nullzuweisen, tritt ein Kompilierungszeitfehler auf.
Bemerkungen
Nothing stellt den Standardwert eines Datentyps dar. Der Standardwert hängt davon ab, ob die Variable einen Werttyp oder einen Bezugstyp aufweist.
Eine Variable eines Werttyps enthält seinen Wert direkt. Werttypen umfassen alle numerischen Datentypen, Boolean, , CharDate, alle Strukturen und alle Enumerationen. Eine Variable eines Verweistyps speichert einen Verweis auf eine Instanz des Objekts im Arbeitsspeicher. Referenztypen umfassen Klassen, Arrays, Stellvertretungen und Zeichenfolgen. Weitere Informationen finden Sie unter Werttypen und Referenztypen.
Wenn eine Variable einen Werttyp aufweist, hängt das Verhalten davon Nothing ab, ob die Variable einen nullfähigen Datentyp aufweist. Um einen Nullwerttyp darzustellen, fügen Sie dem Typnamen einen ? Modifizierer hinzu. Durch Nothing Zuweisen zu einer nullablen Variablen wird der Wert auf null. Weitere Informationen und Beispiele finden Sie unter Nullwertetypen.
Wenn eine Variable einen Werttyp aufweist, der nicht nullwertebar ist, wird sie durch Zuweisen Nothing auf den Standardwert für den deklarierten Typ festgelegt. Wenn dieser Typ Variablenmmber enthält, werden sie alle auf ihre Standardwerte festgelegt. Im folgenden Beispiel wird dies 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 null 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 einen Verweistyp aufweist, wird sie durch Zuweisen Nothing der Variablen auf einen null Verweis des Variablentyps festgelegt. Eine Variable, die auf einen null Verweis festgelegt ist, ist keinem Objekt zugeordnet. Im folgenden Beispiel wird dies veranschaulicht:
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
Um zu überprüfen, ob eine Bezugsvariable (oder nullable Werttyp)-Variable ist null, verwenden Is Nothing Oder IsNot Nothing. Verwenden Sie nicht = Nothing oder <> Nothing.
Für Zeichenfolgen in Visual Basic entspricht Nothingdie leere Zeichenfolge .
"" = Nothing Daher ist es wahr. Diese Tatsache macht es besonders wichtig, dass Sie den richtigen Vergleich auswählen, wenn Sie mit Zeichenfolgen arbeiten. Obwohl myString = Nothing und myString <> Nothing angeben, ob ein nicht leerer Wert festgelegt ist, empfehlen wir dringend die Verwendung String.IsNullOrEmpty(myString) für diesen Zweck. Verwenden Sie und IsNot Nothing bestimmen SieIs Nothing, ob ein Beliebiger Wert, einschließlich einer leeren Zeichenfolge, festgelegt wurde.
Das folgende Beispiel zeigt Vergleiche, die die Is Operatoren IsNot verwenden:
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 Nothingdiese festlegen, hat die Variable einen Typ von Object. Ein Beispiel hierfür ist Dim something = Nothing. In diesem Fall tritt ein Kompilierzeitfehler auf, wenn Option Strict ein- und Option Infer ausgeschaltet ist.
Wenn Sie einer Objektvariable zuweisen Nothing , bezieht sie sich nicht mehr auf eine Objektinstanz. Wenn die Variable zuvor auf eine Instanz verwiesen hat, beendet sie Nothing die Instanz nicht selbst. Die Instanz wird beendet, und die zugeordneten Arbeitsspeicher- und Systemressourcen werden freigegeben, erst nachdem der Garbage Collector (GC) erkennt, dass keine aktiven Verweise verbleiben.
Nothing unterscheidet sich vom DBNull Objekt, das eine nicht initialisierte Variante oder eine nicht vorhandene Datenbankspalte darstellt.