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çã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
Conceitos
Tempo de vida do objeto: Como os objetos são criados e destruído (Visual Basic)