Nothing (Visual Basic)
Representa el valor predeterminado de cualquier tipo de datos.
Comentarios
Al asignar Nothing a una variable, se establece el valor predeterminado de su tipo declarado. Si ese tipo contiene miembros de variables, se establecen los valores predeterminados de todos ellos. En el ejemplo siguiente se ilustra todo esto para los tipos escalares.
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
Si la variable es de un tipo de referencia, un valor de Nothing significa que la variable no está asociada a ningún objeto. La variable tiene un valor nulo. En el siguiente ejemplo se muestra cómo.
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
Para probar variables de referencia y de tipo que acepta valores NULL para los valores Nothing, utilice el operador Is o el operador IsNot. Las comparaciones que usan el signo igual, por ejemplo, someVar = Nothing, siempre se evalúan como Nothing. En el siguiente ejemplo se muestran comparaciones que usan los operadores Is e 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
Para obtener más información y ejemplos, vea Tipos que admiten valores null (Visual Basic).
Cuando se asigna Nothing a una variable de objeto, ya no hace referencia a una instancia de objeto. Si la variable anteriormente hacía referencia a una instancia, establecer dicha instancia en Nothing no causará la finalización de la misma. Sólo después de que el recolector de elementos no utilizados (GC) detecte que ya no hay referencias activas, la instancia finalizará, y la memoria y los recursos del sistema asociados con ella quedarán liberados.
Vea también
Referencia
Instrucción Dim (Visual Basic)
IsNot (Operador) (Visual Basic)
Conceptos
Duración de los objetos: cómo se crean y destruyen (Visual Basic)