Nothing (Visual Basic)
Representa el valor predeterminado de cualquier tipo de datos.para los tipos de referencia, el valor predeterminado es la referencia de null .Para los tipos de valor, el valor predeterminado depende de si el tipo de valor es que acepta valores NULL.
[!NOTA]
Para los tipos de valor que no aceptan valores NULL, Nothing en Visual Basic diferencia de null en C#.En Visual Basic, si establece una variable de un tipo de valor que no aceptan valores NULL a Nothing, la variable se establece el valor predeterminado para el tipo declarado.En C#, si se asigna una variable de un tipo de valor que no aceptan valores NULL a null, se produce un error de compilación.
Comentarios
Nothing representa el valor predeterminado de un tipo de datos.El valor predeterminado depende de si la variable es de un tipo de valor o un tipo de referencia.
una variable de un tipo de valor contiene directamente su valor.los tipos de valor incluyen todos los datos numéricos, Boolean, Char, Date, todas las estructuras, y todas las enumeraciones.Una variable de un tipo de referencia almacena una referencia a una instancia de objeto en memoria.Clases, matrices, delegados, y cadenas de inclusión de los tipos de referencia.Para obtener más información, vea Tipos de valor y tipos de referencia.
Si la variable es de un tipo de valor, el comportamiento de Nothing depende de si la variable es de un tipo de datos acepta valores NULL.Para representar un tipo de valor que acepta valores NULL, agregue un modificador de ? a un nombre de tipo.La asignación Nothing a una variable que establezca el valor en null.Para obtener más información y ejemplos, vea Tipos que admiten valores null (Visual Basic).
Si la variable es de un tipo de valor que no es que acepta valores NULL, la asignación de Nothing ella establecida en el valor predeterminado para el 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
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
Si una variable es de un tipo de referencia, asignándolo a Nothing conjuntos variables a una referencia de null del tipo de la variable.Una variable que se establece en una referencia de null no está asociado a ningún objeto.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
Al comprobar si una variable de referencia (o tipo de valor que acepta valores NULL) es null, no utilice = Nothing o <> Nothing.Utilice siempre Is Nothing o IsNot Nothing.
Para las cadenas en Visual Basic, la cadena vacía es Nothing.Por consiguiente, "" = Nothing es true.
En el siguiente ejemplo se muestran comparaciones que usan los operadores Is e IsNot.
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
Si se declara una variable sin usar una cláusula As y se establece en Nothing, el tipo de la variable es Object.Un ejemplo de esto es Dim something = Nothing.Se produce un error de compilación en este caso Option Strict está y Option Infer está desactivado.
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.
Nothing difiere del objeto de DBNull , que representa una variante inicializado o una columna existente de la base de datos.
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)