Nic (Visual Basic)
Představuje výchozí hodnotu datového typu.Pro referenční typy výchozí hodnota je null odkaz.Typy hodnot výchozí hodnota závisí na tom, zda je hodnota typ s možnou hodnotou Null.
[!POZNÁMKA]
Pro typy Structure hodnoty Nothing v jazyce Visual Basic se liší od null v jazyce C#.V jazyce Visual Basic, pokud nastavíte proměnnou typu Structure hodnotu Nothing, je proměnná nastavena na výchozí hodnotu pro jeho deklarovaný typ.V jazyce C#, pokud přiřazení proměnné typu Structure hodnotu null, dojde k chybě kompilace.
Poznámky
Nothingpředstavuje výchozí hodnotu datového typu.Výchozí hodnota závisí na tom, že proměnná je typu hodnoty nebo typ odkazu.
Proměnná Typ hodnoty přímo obsahuje jeho hodnotu.Typy hodnot zahrnout všechny číselné datové typy Boolean, Char, Date, všechny struktury a všechny výčty.Proměnná Typ odkazu odkaz na instanci objektu ukládá do paměti.Referenční typy zahrnují tříd, matice, delegátů a řetězce.Další informace naleznete v tématu Typy hodnoty a typy odkazů.
Pokud je hodnota proměnné zadejte, chování Nothing závisí na tom, zda je proměnná typu dat s možnou hodnotou Null.Typ s možnou hodnotou Null hodnoty představují, přidat ? modifikátor názvu typu.Přiřazení Nothing s možnou hodnotou Null proměnné nastaví hodnotu na null.Další informace a příklady naleznete v tématu S možnou hodnotou Null typy hodnot (Visual Basic).
Typ hodnoty, která není s možnou hodnotou NULL je proměnná, přiřazení Nothing a nastaví ji na výchozí hodnotu pro jeho deklarovaný typ.Pokud daný typ obsahuje proměnné členů, budou nastaveny na výchozí hodnoty.Následující příklad ilustruje skalárních typů.
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
Proměnná je typu odkazu, přiřazení Nothing proměnné nastavit, aby null odkaz proměnnou typu.Proměnná, která je nastavena null odkaz není přidružen žádný objekt.Následující příklad ukazuje 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
Při kontrole, zda odkaz (nebo s možnou hodnotou Null hodnota zadejte) je proměnná null, nepoužívejte = Nothing nebo <> Nothing.Always use Is Nothing or IsNot Nothing.
Řetězce v jazyce Visual Basic se rovná prázdný řetězec Nothing.Proto "" = Nothing je PRAVDA.
Následující příklad ukazuje použití porovnání Is a IsNot operátory.
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
Pokud deklarujete proměnnou bez použití As klauzule a nastavte ji na Nothing, proměnná je typu Object.To je Dim something = Nothing.V takovém případě dojde k chybě kompilace při Option Strict na a Option Infer je vypnuto.
Jestliže přiřadíte Nothing na proměnné objektu již odkazuje na všechny instance objektu.Pokud proměnná bylo dříve uvedené instance, nastavení na Nothing neskončí samotnou instanci.Instance je ukončen a pamětí a systémovými prostředky, které jsou s ním spojené vydány pouze po uvolnění paměti kolekcí (GC) zjistí, že neexistují žádné aktivní odkazy zbývající.
Nothingliší DBNull objektu, který představuje neinicializované variant nebo neexistující databázový sloupec.
Viz také
Referenční dokumentace
Koncepty
Životnost objektu: Vytváření objektů a zničeny (Visual Basic)