Sdílet prostřednictvím


Nothing (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 hodnot a typy odkazu.

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 Typy hodnot s povolenou hodnotou Null (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

Dim – příkaz (Visual Basic)

Is – operátor (Visual Basic)

IsNot – operátor (Visual Basic)

Koncepty

Doba života objektu: Vytváření a odstraňování objektů (Visual Basic)

Doba platnosti v jazyce Visual Basic

Typy hodnot s povolenou hodnotou Null (Visual Basic)