C # - Nullables

C # fournit un type de données spécial, le nullable types, auxquels vous pouvez attribuer une plage normale de valeurs ainsi que des valeurs nulles.

Par exemple, vous pouvez stocker n'importe quelle valeur comprise entre -2 147 483 648 et 2 147 483 647 ou null dans une variable Nullable <Int32>. De même, vous pouvez affecter true, false ou null dans une variable Nullable <bool>. Syntaxe pour déclarer unnullable le type est le suivant -

< data_type> ? <variable_name> = null;

L'exemple suivant illustre l'utilisation de types de données Nullable -

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();
      }
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

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

L'opérateur de coalescence nul (??)

L'opérateur de fusion null est utilisé avec les types valeur Nullable et les types référence. Il est utilisé pour convertir un opérande en type d'un autre opérande de type valeur Nullable (ou non), où une conversion implicite est possible.

Si la valeur du premier opérande est nulle, alors l'opérateur renvoie la valeur du deuxième opérande, sinon il renvoie la valeur du premier opérande. L'exemple suivant explique cela -

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();
      }
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Value of num3: 5.34
Value of num3: 3.14157