Clase System.Nullable

En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.

La Nullable clase admite tipos de valor que se pueden 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 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.

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.

Si la HasValue propiedad de un tipo que acepta valores NULL es false, el resultado de la operación boxing es null. 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.