Nothing (Visual Basic)
Reprezentuje dowolny typ danych wartość domyślna.Typy odwołań, wartością domyślną jest null odniesienia.Dla typów wartości wartość domyślna zależy od tego, czy typ wartości jest NULL.
[!UWAGA]
Dla typów wartości null Nothing w języku Visual Basic różni się od null w języku C#.W języku Visual Basic, jeśli ustawienia zmiennej typu NULL wartość do Nothing, zmienna jest ustawiana na wartość domyślną dla jego deklarowanego typu.W języku C#, jeśli można przypisać do zmiennej typu NULL wartość do null, wystąpi błąd kompilacji.
Uwagi
Nothingreprezentuje wartość domyślny typ danych.Wartość domyślna zależy od tego, czy zmienna jest typu wartości lub typ odwołania.
Zmiennej wartości typu bezpośrednio zawiera jego wartość.Typy wartości obejmują wszystkie typy danych liczbowych, Boolean, Char, Date, wszystkie struktury i wszystkie wyliczenia.Zmiennej Typ odwołania przechowuje odwołanie do instancji obiektu w pamięci.Typy odwołań zawiera klasy, tablice, delegatów i ciągi znaków.Aby uzyskać więcej informacji, zobacz Typy wartości i odwołań.
Jeśli zmienna jest wartością typu, zachowanie Nothing zależy od tego, czy zmienna jest typ danych Null.Do reprezentowania typu wartości NULL, należy dodać ? modyfikator do nazwy typu.Przypisywanie Nothing do zmiennej nullable ustawia wartość null.Aby uzyskać dodatkowe informacje i przykłady, zobacz Typy o wartości zerowalnej (Visual Basic).
Jeśli zmienna jest typ wartości, która nie jest NULL, przypisywanie Nothing do ustawia ją na wartość domyślną dla jego deklarowanego typu.Tego typu zawiera zmienną członków, są one wszystkie ustawione wartości domyślne.Poniższy przykład ilustruje to typy skalarne.
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
Jeśli zmienna jest typu odwołania, przypisywanie Nothing do zmiennej ustawia ją na null odwołanie typu zmiennej.Zmienna, która jest ustawiona na null odniesienia nie jest skojarzone z żadnym obiektem.Poniższy przykład ilustruje to.
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
Podczas sprawdzania, czy odwołanie (lub wartość NULL, wpisz) jest zmienna null, nie należy używać = Nothing lub <> Nothing.Always use Is Nothing or IsNot Nothing.
Ciągi w języku Visual Basic, pusty ciąg znaków jest równa Nothing.W związku z tym "" = Nothing ma wartość true.
Poniższy przykład ilustruje porównania, które używają Is i IsNot podmiotów gospodarczych.
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
Jeśli Zadeklaruj zmienną bez korzystania z As klauzuli i ustawić ją na Nothing, zmienna ma określony typ Object.Przykładem tego jest Dim something = Nothing.Występuje błąd w czasie kompilacji, w tym przypadku po Option Strict znajduje się na i Option Infer jest wyłączona.
Gdy przypiszesz Nothing do zmiennej obiektu nie jest już odnosi się do dowolnej instancji obiektu.Jeśli zmienna miał wcześniej określone wystąpienie, ustawiając ją na Nothing nie kończy instancji, sam.Wystąpienie jest zakończony i zasoby pamięci i system skojarzony z nim, wydany jedynie po garbage collector (GC) wykrywa nie odwołań pozostałych do aktywnego.
Nothingróżni się od DBNull obiekt, który reprezentuje niezainicjowanej wariant lub kolumna nieistniejący bazy danych.
Zobacz też
Informacje
Dim — Instrukcja (Visual Basic)
IsNot — Operator (Visual Basic)
Koncepcje
Okres istnienia obiektów: w jaki sposób obiekty są tworzone i niszczone (Visual Basic)