Types nullables (Guide de programmation C#)

Mise à jour : novembre 2007

Les types nullables sont des instances du struct System.Nullable<T>. Un type nullable peut représenter la plage correcte de valeurs pour son type valeur sous-jacent, plus une valeur null supplémentaire. Par exemple, un Nullable<Int32>, prononcé « Nullable d'Int32 », peut avoir une valeur comprise entre -2147483648 et 2147483647, ou la valeur null. Les valeurs truefalse ou null peuvent être assignées à un type Nullable<bool>. La possibilité d'assigner null à des types numériques et booléens est particulièrement utile lorsque vous utilisez des bases de données et d'autres types de données contenant des éléments auxquels vous ne pouvez pas assigner de valeur. Par exemple, un champ booléen dans une base de données peut stocker les valeurs true ou false, ou peut être indéfini.

class NullableExample
{
    static void Main()
    {
        int? num = null;
        if (num.HasValue == true)
        {
            System.Console.WriteLine("num = " + num.Value);
        }
        else
        {
            System.Console.WriteLine("num = Null");
        }

        // y is set to zero
        int y = num.GetValueOrDefault();

        // num.Value throws an InvalidOperationException if num.HasValue is false
        try
        {
            y = num.Value;
        }
        catch (System.InvalidOperationException e)
        {
            System.Console.WriteLine(e.Message);
        }
    }
}

La sortie suivante sera affichée :

num = Null

Nullable object must have a value.

Vue d'ensemble des types nullables

Les types nullables ont les caractéristiques suivantes :

  • Les types nullables représentent des variables de type de valeur auxquelles vous pouvez assigner la valeur null. Vous ne pouvez pas créer de type nullable sur la base d'un type référence. (Les types référence prennent déjà en charge la valeur null.)

  • La syntaxe T? est le format abrégé de Nullable<T>, où T est un type valeur. Les deux formats sont interchangeables.

  • Assignez une valeur à un type nullable comme pour un type valeur ordinaire, par exemple int? x = 10; ou double? d = 4.108;

  • Utilisez la méthode Nullable<T>.GetValueOrDefault pour retourner la valeur assignée ou la valeur par défaut pour le type sous-jacent si la valeur est null, par exemple int j = x.GetValueOrDefault();

  • Utilisez les propriétés en lecture seule HasValue et Value pour rechercher une valeur nulle et la récupérer, par exemple if(x.HasValue) j = x.Value;

    • La propriété HasValue retourne true si la variable contient une valeur, ou false si elle est nulle.

    • La propriété Value retourne une valeur si une valeur est assignée. Sinon, System.InvalidOperationException est levé.

    • La valeur par défaut pour une variable de type nullable définit HasValue à false. Value est indéfini.

  • Utilisez l'opérateur ?? pour assigner une valeur par défaut qui sera appliquée lorsqu'un type nullable dont la valeur actuelle est nulle est assigné à un type non nullable, par exemple int? x = null; int y = x ?? -1;

  • Les types nullables imbriqués ne sont pas autorisés. La ligne suivante ne sera pas compilée : Nullable<Nullable<int>> n;

Rubriques connexes

Pour plus d'informations  :

Spécification du langage C#

Pour plus d'informations, consultez la section suivante dans Spécifications du langage C#.

  • 4.1.10 types nullables

Voir aussi

Tâches

Type nullable, exemple

Concepts

Guide de programmation C#

Référence

Nullable

Autres ressources

Visual C#

Référence C#

What exactly does 'lifted' mean?