Поделиться через


Nothing (Visual Basic)

Представляет значение по умолчанию любого типа данных.

Заметки

При присвоении переменной ключевого слова Nothing задается значение по умолчанию для объявленного типа переменной. Если тип содержит элементы переменных, для них задаются соответствующие значения по умолчанию. Следующий пример иллюстрирует это для скалярных типов.

Module Module1
    Public Structure testStruct
        Public name As String
        Public number As Short
    End Structure

    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)

    End Sub

End Module

Если переменная относится к ссылочному типу, значение Nothing означает, что переменная не связана с каким-либо объектом. Переменная имеет значение NULL. Это показано в приведенном ниже примере.

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

Чтобы проверить переменные ссылочного типа и типа, допускающего значение NULL, на предмет значений Nothing, используйте оператор Is или оператор IsNot. Сравнения, использующие знак равенства, например someVar = Nothing, всегда имеют значение Nothing. В следующем примере показаны сравнения с использованием операторов Is и IsNot.

Module Module1
    Sub Main()

        Dim testObject As Object
        testObject = Nothing
        ' The following statement displays "True".
        Console.WriteLine(testObject Is Nothing)

        Dim tc As New TestClass
        tc = Nothing
        ' The following statement displays "False".
        Console.WriteLine(tc IsNot Nothing)

        Dim n? As Integer
        ' The following statement displays "True".
        Console.WriteLine(n Is Nothing)
        n = 4
        ' The following statement displays "False".
        Console.WriteLine(n Is Nothing)
        n = Nothing
        ' The following statement displays "False".
        Console.WriteLine(n IsNot Nothing)

    End Sub

    Class TestClass
        Public field1 As Integer
        Dim field2 As Boolean
    End Class
End Module

Дополнительные сведения и примеры см. в разделе Типы значения, допускающие Null (Visual Basic).

При присвоении объектной переменной ключевого слова Nothing она больше не ссылается на какой-либо экземпляр объекта. Если переменная ранее содержала ссылку на экземпляр, задание ключевого слова Nothing не удаляет экземпляр как таковой. Использование экземпляра прекращается, и связанные с ним память и системные ресурсы освобождаются только после того, как сборщик мусора (GC) обнаружит, что не осталось активных ссылок на экземпляр.

См. также

Ссылки

Оператор Dim (Visual Basic)

Оператор Is (Visual Basic)

Оператор IsNot (Visual Basic)

Основные понятия

Время существования: создание и уничтожение объектов (Visual Basic)

Время существования в Visual Basic

Типы значения, допускающие Null (Visual Basic)