Conceptos del lenguaje Visual Basic
Tipos de valor que puede que no tengan un valor definido

A veces trabaja con un tipo de valor que no tiene un valor definido en ciertas circunstancias. Por ejemplo, puede que resulte necesario que un campo de una base de datos distinga entre disponer de un valor significativo y no tener asignado un valor. Los tipos de valor se pueden extender para tomar sus valores normales o un valor nulo. Este tipo de extensión se denomina un tipo que acepta valores NULL.

Los tipos que aceptan valores NULL se construyen a partir de la estructura genérica Nullable. Considere una base de datos que realiza el seguimiento de las actividades relacionadas con el trabajo. El ejemplo siguiente construye un tipo Boolean que acepta valores NULL y declara una variable de ese tipo.

Dim ridesBusToWork As Nullable(Of Boolean) 

La variable ridesBusToWork pueden contener un valor True, un valor False o ninguno de ellos. Su valor predeterminado inicial es ningún valor, lo que en este caso podría significar que todavía no se ha obtenido la información correspondiente a esta persona. False, por su parte, podría significar que se ha obtenido la información y la persona no utiliza el autobús para ir al trabajo.

Puede declarar variables y propiedades con tipos que aceptan valores NULL y puede declarar una matriz con elementos de un tipo que acepta valores NULL. Puede declarar procedimientos con tipos que aceptan valores NULL como parámetros y puede devolver un tipo que acepta valores NULL de un procedimiento Function.

No puede construir un tipo que acepta valores NULL en un tipo de referencia como una matriz, un objeto String o una clase. El tipo subyacente debe ser un tipo de valor. Para obtener más información, vea Tipos de valores y tipos de referencia.

Utilizar una variable de tipo que acepta valores NULL

Los miembros más importantes de un tipo que acepta valores NULL son sus propiedades HasValue y Value. En una variable de un tipo que acepta valores NULL, HasValue indica si la variable contiene un valor definido. Si HasValue tiene el valor True, puede leer el valor de Value. Observe que HasValue y Value son propiedades de tipo ReadOnly.

Valores predeterminados

Cuando declara una variable con un tipo que acepta valores NULL, su propiedad HasValue tiene un valor predeterminado de False. Esto significa que la propia variable tiene como valor predeterminado no incluir ningún valor definido, en lugar del valor predeterminado de su tipo de valor subyacente. En el ejemplo siguiente, la variable numberOfChildren no tiene inicialmente ningún valor definido, aunque el valor predeterminado del tipo Integer es 0.

Dim numberOfChildren As Nullable(Of Integer) 

Un valor nulo es útil para indicar un valor indefinido o desconocido. Si numberOfChildren se hubiese declarado como Integer, no habría ningún valor que indicase que la información no está disponible actualmente.

Almacenar valores

El almacenamiento de un valor en una variable o una propiedad de un tipo que acepta valores NULL se realiza de la manera normal. El ejemplo siguiente asigna un valor a la variable numberOfChildren declarada en el ejemplo anterior.

numberOfChildren = 2 

Si una variable o una propiedad de un tipo que acepta valores NULL contiene un valor definido, puede determinar que vuelva a su estado inicial, es decir, sin ningún valor asignado. Para ello, establece la variable o la propiedad como Nothing, según se muestra en el ejemplo siguiente.

numberOfChildren = Nothing 
NoteNota

Aunque puede asignar Nothing a una variable de un tipo que acepta valores NULL, no puede probarlo con Nothing. Debe probar su propiedad HasValue con False.

Recuperar valores

Para recuperar el valor de una variable de un tipo que acepta valores NULL, debe probar previamente su propiedad HasValue para confirmar que incluye un valor. Si intenta leer el valor cuando HasValue es False, Visual Basic produce una excepción InvalidOperationException. El ejemplo siguiente muestra la manera recomendada de leer la variable numberOfChildren de los ejemplos anteriores.

If numberOfChildren.HasValue Then 
    MsgBox("There are " & CStr(numberOfChildren) & " children.") 
Else
    MsgBox("It is not known how many children there are.")
End If 

Utilizar tipos que aceptan valores NULL con datos

Una base de datos es uno de los lugares más importantes para utilizar tipos que aceptan valores NULL. No todos los objetos de base de datos son actualmente compatibles con los tipos que aceptan valores NULL, pero sí lo son los adaptadores de tablas generadas por el diseñador. Vea la sección sobre compatibilidad de TableAdapter con tipos que aceptan valores NULL en Información general sobre TableAdapter.

Vea también

Etiquetas :


Page view tracker