Partager via


Types Nullable (Guide de programmation C#)

Les types Nullable 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 true false 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.

Pour plus d'exemples, consultez Utilisation de types Nullable (Guide de programmation C#).

Vue d'ensemble des types Nullable

Les types Nullable ont les caractéristiques suivantes :

  • Les types Nullable représentent des variables de type 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. Un type Nullable peut également être se voir assigner a valeur null : int? x = null.

  • 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 Null et la récupérer, comme indiqué dans l'exemple suivant : if(x.HasValue) j = x.Value;

    • La propriété HasValue retourne true si la variable contient une valeur ou false si c'est null.

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

    • La valeur par défaut de HasValue est false. La propriété Value n'a pas de valeur par défaut.

    • Vous pouvez également utiliser les opérateurs == et != avec un type Nullable, comme indiqué dans l'exemple suivant : if (x != null) y = x;

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

  • Les types Nullable 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 Spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi

Référence

Nullable

Concepts

Guide de programmation C#

Autres ressources

Visual C#

Référence C#

Que signifie exactement 'lifted' ?