Udostępnij za pośrednictwem


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)

Is — Operator (Visual Basic)

IsNot — Operator (Visual Basic)

Koncepcje

Okres istnienia obiektów: w jaki sposób obiekty są tworzone i niszczone (Visual Basic)

Okres istnienia w Visual Basic

Typy o wartości zerowalnej (Visual Basic)