Estructura T> System.Nullable<
En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.
La Nullable clase representa un tipo de valor al que se puede asignar null
.
Se dice que un tipo acepta valores NULL si se puede asignar un valor o se puede asignar null
, lo que significa que el tipo no tiene ningún valor. De forma predeterminada, todos los tipos de referencia, como String, admiten valores NULL, pero todos los tipos de valor, como Int32, no.
En C# y Visual Basic, se marca un tipo de valor como que acepta valores NULL mediante la ?
notación después del tipo de valor. Por ejemplo, int?
en C# o Integer?
en Visual Basic declara un tipo de valor entero al que se puede asignar null
.
La Nullable<T> estructura solo admite el uso de un tipo de valor como un tipo que acepta valores NULL porque los tipos de referencia admiten valores NULL por diseño.
La Nullable clase proporciona compatibilidad complementaria para la Nullable<T> estructura. La Nullable clase admite la obtención del tipo subyacente de un tipo que acepta valores NULL y las operaciones de comparación e igualdad en pares de tipos que aceptan valores NULL cuyo tipo de valor subyacente no admite operaciones genéricas de comparación e igualdad.
Propiedades fundamentales
Los dos miembros fundamentales de la Nullable<T> estructura son las HasValue propiedades y Value . Si la HasValue propiedad de un Nullable<T> objeto es true
, se puede tener acceso al valor del objeto con la Value propiedad . Si la HasValue propiedad es false
, el valor del objeto no está definido y un intento de obtener acceso a la Value propiedad produce una InvalidOperationExceptionexcepción .
Conversiones boxing y unboxing
Cuando se boxe un tipo que acepta valores NULL, Common Language Runtime realiza automáticamente los cuadros del valor subyacente del Nullable<T> objeto, no el Nullable<T> propio objeto. Es decir, si la HasValue propiedad es true
, el contenido de la Value propiedad se conversión boxing. Cuando el valor subyacente de un tipo que acepta valores NULL está desaboxado, Common Language Runtime crea una nueva Nullable<T> estructura inicializada en el valor subyacente.
Si la HasValue
propiedad de un tipo que acepta valores NULL es false
, el resultado de una operación boxing es null
. Por lo tanto, si se pasa un tipo que acepta valores NULL boxed a un método que espera un argumento de objeto, ese método debe estar preparado para controlar el caso en el que el argumento es null
. Cuando null
está desaboxado en un tipo que acepta valores NULL, Common Language Runtime crea una nueva Nullable<T> estructura e inicializa su HasValue
propiedad en false
.
Componentes de Windows Runtime
Puede incluir un Nullable<T> tipo como miembro de una estructura exportada en una biblioteca winMD.