Nullable en C#
A las variables no se les
puede asignar un valor nulo en C#, por lo que para superar esto, C# proporciona
una característica especial, que asigna un valor nulo a una variable denominada
tipo anulable, y no funciona con el tipo de referencia porque ya hay un valor
nulo. presente, solo funciona con el tipo que acepta valores NULL, que es una
instancia de System.Nullable<T>struct donde T representa tipos de valores que no aceptan
valores NULL, como tipo booleano, tipo entero, tipo de punto flotante, etc.
Sintaxis:
Nullable<data_type> variable_name = null;
La sintaxis anterior
representa el tipo de datos anulable en C#. La palabra clave anulable
representa el tipo anulable que es una instancia de
System.Nullable<T>struct donde T representa tipos de valores no anulables
como tipo booleano, tipo entero, tipo de punto flotante, etc. El tipo de datos
representa el tipo de datos de la variable, donde variable_name representa el
nombre de la variable y se le asigna un valor nulo.
También hay un atajo para
esta sintaxis que implica? operador junto con el tipo de datos como se
menciona a continuación:
data_type? variable_name = null;
La sintaxis anterior
representa el tipo de datos anulable en C#. Los ? El símbolo de marca
representa el tipo anulable. El tipo de datos representa el tipo de datos
de la variable, donde variable_name representa el nombre de la variable y se le
asigna un valor nulo.
Características del tipo anulable en C#
·
No se puede acceder directamente a los valores del tipo que acepta
valores NULL. El método GetValueOrDefault() se usa para extraer el valor
asignado si no está asignado a nulo, y si es nulo, se devuelve el valor
predeterminado, que es cero.
·
Se puede asignar un valor nulo a una variable mediante un tipo que acepta
valores NULL sin necesidad de crear un tipo que acepta valores NULL en función
del tipo de referencia.
·
Los valores se pueden asignar a tipos que aceptan valores NULL.
·
Nullable HasValue y Nullable se pueden usar para comprobar el valor. Si
se asigna un valor a un objeto, se devuelve verdadero y se devuelve falso si se
asigna nulo al objeto. Si no hay ningún valor asignado al objeto, se
genera un error en tiempo de compilación.
·
== y ! los operadores se pueden usar con tipos anulables.
·
Si se asigna un valor nulo al tipo que acepta valores NULL, el método
GetValueOrDefault(T) proporciona el valor asignado o el valor predeterminado
que se proporciona como predeterminado.
·
El operador de fusión nula (??) también se puede usar para asignar un
valor al valor del tipo que acepta valores NULL.
·
Los tipos anidados anulables no son compatibles con el tipo anulable.
·
Un tipo anulable no admite el tipo var. El compilador da un error de
tiempo de compilación si se usa anulable con var.
Ventajas del tipo anulable en C#
·
El tipo anulable se usa en aplicaciones de bases de datos. Si una
columna en una base de datos requiere valores nulos, se puede usar un tipo que
acepta valores nulos para asignar valores nulos a la columna.
·
Los valores no definidos se pueden representar mediante tipos que aceptan
valores NULL.
·
Un valor nulo se puede almacenar utilizando un tipo que acepta valores
NULL en lugar de utilizar un tipo de referencia.
DEMOSTRACIÓN
En el método Main de nuestro proyecto de consola escribiremos lo siguiente:Como podemos observar en la 1era línea de código, se declara una varia que acepta valores enteros pero al colocarle el '?' con esto le indicamos que acepta valores nulos, con el HasValue indica si una instancia de un tipo de valor anulable tiene un valor de su tipo subyacente.