C # - Nulables

C # proporciona tipos de datos especiales, el nullable tipos, a los que puede asignar un rango normal de valores así como valores nulos.

Por ejemplo, puede almacenar cualquier valor de -2,147,483,648 a 2,147,483,647 o nulo en una variable <Int32> que acepta valores NULL. De manera similar, puede asignar verdadero, falso o nulo en una variable <bool> que acepta valores NULL. Sintaxis para declarar unnullable el tipo es el siguiente:

< data_type> ? <variable_name> = null;

El siguiente ejemplo demuestra el uso de tipos de datos que aceptan valores NULL:

using System;

namespace CalculatorApplication {
   class NullablesAtShow {
      static void Main(string[] args) {
         int? num1 = null;
         int? num2 = 45;
         
         double? num3 = new double?();
         double? num4 = 3.14157;
         
         bool? boolval = new bool?();

         // display the values
         Console.WriteLine("Nullables at Show: {0}, {1}, {2}, {3}", num1, num2, num3, num4);
         Console.WriteLine("A Nullable boolean value: {0}", boolval);
         Console.ReadLine();
      }
   }
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Nullables at Show: , 45,  , 3.14157
A Nullable boolean value:

El operador coalescente nulo (??)

El operador de fusión nula se utiliza con los tipos de valor que aceptan valores NULL y los tipos de referencia. Se utiliza para convertir un operando al tipo de otro operando de tipo valor que acepta valores NULL (o no), donde es posible una conversión implícita.

Si el valor del primer operando es nulo, entonces el operador devuelve el valor del segundo operando; de lo contrario, devuelve el valor del primer operando. El siguiente ejemplo explica esto:

using System;

namespace CalculatorApplication {
   class NullablesAtShow {
      static void Main(string[] args) {
         double? num1 = null;
         double? num2 = 3.14157;
         double num3;
         
         num3 = num1 ?? 5.34;      
         Console.WriteLine(" Value of num3: {0}", num3);
         
         num3 = num2 ?? 5.34;
         Console.WriteLine(" Value of num3: {0}", num3);
         Console.ReadLine();
      }
   }
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Value of num3: 5.34
Value of num3: 3.14157