Types Nullable (Guide de programmation C#)Nullable Types (C# Programming Guide)

Les types Nullable sont des instances du struct System.Nullable<T>.Nullable types are instances of the System.Nullable<T> struct. Un type Nullable peut représenter la plage correcte de valeurs de son type valeur sous-jacent, plus une valeur null supplémentaire.A nullable type can represent the correct range of values for its underlying value type, plus an additional null value. Par exemple, un Nullable<Int32>, prononcé « Nullable d’Int32 », peut se voir affecter n’importe quelle valeur entre -2147483648 et 2147483647, ou la valeur null.For example, a Nullable<Int32>, pronounced "Nullable of Int32," can be assigned any value from -2147483648 to 2147483647, or it can be assigned the null value. Un Nullable<bool> peut se voir affecter les valeurs true, false ou null.A Nullable<bool> can be assigned the values true, false, or null. La capacité à affecter null aux types numériques et booléens est particulièrement utile lorsque l’on travaille avec des bases de données et d’autres types de données qui contiennent des éléments potentiellement sans valeur.The ability to assign null to numeric and Boolean types is especially useful when you are dealing with databases and other data types that contain elements that may not be assigned a value. Par exemple, un champ booléen dans une base de données peut stocker la valeur true ou false, ou être indéfini.For example, a Boolean field in a database can store the values true or false, or it may be undefined.

using System;

class NullableExample
{
  static void Main()
  {
      int? num = null;

      // Is the HasValue property true?
      if (num.HasValue)
      {
          Console.WriteLine("num = " + num.Value);
      }
      else
      {
          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 (InvalidOperationException e)
      {
         Console.WriteLine(e.Message);
      }
   }
}
// The example displays the following output:
//       num = Null
//       Nullable object must have a value.

Pour plus d’exemples, consultez la page Utiliser les types Nullable.For more examples, see Using Nullable Types

Vue d’ensemble des types NullableNullable Types Overview

Les types Nullable possèdent les caractéristiques suivantes :Nullable types have the following characteristics:

  • Les types Nullable représentent des variables de type valeur qui peuvent avoir la valeur null.Nullable types represent value-type variables that can be assigned the value of null. Il n’est pas possible de créer un type Nullable à partir d’un type référence.You cannot create a nullable type based on a reference type. (Les types référence prennent déjà en charge la valeur null.)(Reference types already support the null value.)

  • La syntaxe T? est la forme abrégée de Nullable<T>, où T est un type valeur.The syntax T? is shorthand for Nullable<T>, where T is a value type. Les deux formats sont interchangeables.The two forms are interchangeable.

  • Affectez une valeur à un type Nullable, comme vous le feriez pour un type valeur ordinaire, par exemple int? x = 10; ou double? d = 4.108.Assign a value to a nullable type just as you would for an ordinary value type, for example int? x = 10; or double? d = 4.108. Un type Nullable peut également avoir la valeur null : int? x = null.A nullable type can also be assigned the value null: int? x = null.

  • Utilisez la méthode Nullable<T>.GetValueOrDefault pour retourner la valeur affectée, ou la valeur par défaut du type sous-jacent si la valeur est null, par exemple int j = x.GetValueOrDefault();Use the Nullable<T>.GetValueOrDefault method to return either the assigned value, or the default value for the underlying type if the value is null, for example int j = x.GetValueOrDefault();

  • Utilisez les propriétés HasValue et Value en lecture seule pour rechercher les valeurs null et récupérer la valeur, comme indiqué dans l’exemple suivant : if(x.HasValue) j = x.Value;Use the HasValue and Value read-only properties to test for null and retrieve the value, as shown in the following example: if(x.HasValue) j = x.Value;

    • La propriété HasValue retourne true si la variable contient une valeur, ou false si elle est null.The HasValue property returns true if the variable contains a value, or false if it is null.

    • La propriété Value retourne une valeur s’il existe une valeur affectée.The Value property returns a value if one is assigned. Sinon, une exception System.InvalidOperationException est levée.Otherwise, a System.InvalidOperationException is thrown.

    • La valeur par défaut de HasValue est false.The default value for HasValue is false. La propriété Value n’a pas de valeur par défaut.The Value property has no default value.

    • Vous pouvez également utiliser les opérateurs == et != avec un type Nullable, comme le montre l’exemple suivant : if (x != null) y = x;.You can also use the == and != operators with a nullable type, as shown in the following example: if (x != null) y = x;

  • Utilisez l’opérateur ?? pour affecter une valeur par défaut qui sera appliquée lorsqu’un type Nullable dont la valeur actuelle est null sera affecté à un type non Nullable, par exemple int? x = null; int y = x ?? -1;.Use the ?? operator to assign a default value that will be applied when a nullable type whose current value is null is assigned to a non-nullable type, for example int? x = null; int y = x ?? -1;

  • Les types Nullable imbriqués ne sont pas autorisés.Nested nullable types are not allowed. Il n’est pas possible de compiler la ligne suivante : Nullable<Nullable<int>> n;The following line will not compile: Nullable<Nullable<int>> n;

Pour plus d'informations :For more information:

Spécification du langage C#C# Language Specification

Pour plus d'informations, voir 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 aussiSee Also

Nullable
Guide de programmation C#C# Programming Guide
C#C#
Référence C#C# Reference
Que signifie réellement « Lifted » ?What exactly does 'lifted' mean?