Compartilhar via


Nada (Visual Basic)

Representa o valor padrão de qualquer tipo de dados.Para tipos de referência, o valor padrão é o null referência.Para tipos de valor, o valor padrão depende se o tipo de valor é anulável.

ObservaçãoObservação

Para tipos de valor não nulo, Nothing Visual Basic difere de null em C#.No Visual Basic, se você definir uma variável de um tipo de valor não-nulo para Nothing, a variável é definida como o valor padrão para seu tipo declarado.No C#, se você atribuir uma variável de um tipo de valor não-nulo para null, ocorrerá um erro em tempo de compilação.

Comentários

Nothingrepresenta o valor padrão de um tipo de dados.O valor padrão depende de se encontrar a variável de um tipo de valor ou de um tipo de referência.

Uma variável de um tipo de valor contém diretamente de seu valor.Os tipos de valor incluem todos os tipos de dados numéricos, Boolean, Char, Date, todas as estruturas e todas as enumerações.Uma variável de um tipo de referência armazena uma referência a uma instância do objeto na memória.Tipos de referência incluem classes, matrizes, delegados e seqüências de caracteres.Para obter mais informações, consulte Tipos de valor e referência.

Se uma variável é de um valor de tipo, o comportamento de Nothing depende se a variável é um tipo de dados anulável.Para representar um tipo de valor nulo, adicione um ? o modificador do nome de tipo.A atribuição de Nothing a uma variável anulável define o valor para null.Para mais informações e exemplos, consulte Tipos anuláveis do valor (Visual Basic).

Se uma variável é de um tipo de valor não é anulável, atribuindo Nothing para ele define como o valor padrão para seu tipo declarado.Se o tipo contém membros variáveis, eles são definidos para seus valores padrão.O exemplo a seguir ilustra isso para tipos escalares.

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

Se uma variável é de um tipo de referência, atribuindo Nothing à variável define-o como um null referência do tipo da variável.Uma variável que está definida como um null referência não está associada a qualquer objeto.O exemplo a seguir demonstra isso.

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

Ao verificar se uma referência (ou um valor nulo digite) é a variável null, não use = Nothing ou <> Nothing.Always use Is Nothing or IsNot Nothing.

Seqüências de caracteres em Visual Basic, a seqüência de caracteres vazia é igual a Nothing.Portanto, "" = Nothing é verdadeiro.

O exemplo a seguir mostra as comparações que usam o Is e IsNot operadores.

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

Se você declarar uma variável sem usar um As cláusula e defina-o como Nothing, a variável tem um tipo de Object.Um exemplo disso é Dim something = Nothing.Nesse caso ocorre de um erro de tempo de compilação quando Option Strict está ativado e Option Infer está desativado.

Quando você atribui Nothing a um variável de objeto, ela não mais se refere a qualquer instância do objeto.Se a variável tivesse anteriormente referenciado uma instância, defini-la como Nothing não finaliza a instância em si.A instância é finalizada, e os recursos de memória e do sistema associados a ela são liberados, somente após o coletor de lixo (GC) detectar que não há mais referências ativas restantes.

Nothingdifere do DBNull objeto que representa um variant não inicializado ou uma coluna de banco de dados inexistente.

Consulte também

Referência

Instrução (Visual Basic) Dim

É o operador (Visual Basic)

Operador IsNot (Visual Basic)

Conceitos

Tempo de vida do objeto: Como os objetos são criados e destruído (Visual Basic)

Tempo de vida em Visual Basic

Tipos anuláveis do valor (Visual Basic)