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. Les types Nullable peuvent représenter toutes les valeurs d’un type sous-jacent T ainsi qu’une autre valeur null.Nullable types can represent all the values of an underlying type T, and an additional null value. Le type sous-jacent T peut être n’importe quel type valeur non nullable.The underlying type T can be any non-nullable value type. T ne peut pas être un type référence.T cannot be a reference type.

Par exemple, vous pouvez affecter null ou toute valeur entière à partir de Int32.MinValue à Int32.MaxValue à un Nullable<int> et true, false ou null à un Nullable<bool>.For example, you can assign null or any integer value from Int32.MinValue to Int32.MaxValue to a Nullable<int> and true, false, or null to a Nullable<bool>.

Utilisez un type nullable lorsque vous avez besoin de représenter la valeur non definie d’un type sous-jacent.You use a nullable type when you need to represent the undefined value of an underlying type. Une variable booléenne peut avoir uniquement deux valeurs : true et false.A Boolean variable can have only two values: true and false. Il n’existe aucune valeur « non définie ».There is no "undefined" value. Dans de nombreuses applications de programmation, notamment dans les interactions de base de données, une valeur de variable peut être indéfinie ou manquante.In many programming applications, most notably database interactions, a variable value can be undefined or missing. Par exemple, un champ dans une base de données peut contenir les valeurs true ou false, ou aucune valeur du tout.For example, a field in a database may contain the values true or false, or it may contain no value at all. Vous utilisez un type Nullable<bool> dans ce cas.You use a Nullable<bool> type in that case.

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 null value. 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 l’abréviation de Nullable<T>.The syntax T? is shorthand for Nullable<T>. Les deux formats sont interchangeables.The two forms are interchangeable.

  • Affectez une valeur à un type Nullable, comme vous le feriez pour un type valeur sous-jacent : int? x = 10; ou double? d = 4.108;.Assign a value to a nullable type just as you would for an underlying value type: int? x = 10; or double? d = 4.108;. Vous pouvez également affecter la valeur null : int? x = null;.You also can assign the null value: int? x = null;.

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

  • Vous pouvez également utiliser les opérateurs == et != avec un type Nullable, comme le montre l’exemple suivant : if (x != null) y = x.Value;.You can also use the == and != operators with a nullable type, as shown in the following example: if (x != null) y = x.Value;. Si a et b sont tous les deux null, a == b prend la valeur true.If a and b are both null, a == b evaluates to true.

  • À compter de C# 7.0, vous pouvez utiliser les critères spéciaux pour examiner et obtenir une valeur d’un type Nullable : if (x is int valueOfX) y = valueOfX;.Beginning with C# 7.0, you can use pattern matching to both examine and get a value of a nullable type: if (x is int valueOfX) y = valueOfX;.

  • La valeur par défaut de T? est une instance dont la propriété HasValue retourne false.The default value of T? is an instance whose HasValue property returns false.

  • Utilisez la méthode GetValueOrDefault() pour retourner la valeur affectée, ou la valeur par défaut du type valeur sous-jacent si la valeur du type Nullable est null.Use the GetValueOrDefault() method to return either the assigned value, or the default value of the underlying value type if the value of the nullable type is null.

  • Utilisez la méthode GetValueOrDefault(T) pour retourner la valeur affectée, ou la valeur par défaut fournie si la valeur du type Nullable est null.Use the GetValueOrDefault(T) method to return either the assigned value, or the provided default value if the value of the nullable type is null.

  • Utilisez l’opérateur null-coalescing, ??, pour affecter une valeur à un type sous-jacent basé sur une valeur du type Nullable : int? x = null; int y = x ?? -1;.Use the null-coalescing operator, ??, to assign a value to an underlying type based on a value of the nullable type: int? x = null; int y = x ?? -1;. Dans l’exemple, dans la mesure où x est null, la valeur de résultat de y est -1.In the example, since x is null, the result value of y is -1.

  • Si une conversion définie par l’utilisateur est définie entre deux types de données, la même conversion peut également être utilisée avec les versions Nullable de ces types de données.If a user-defined conversion is defined between two data types, the same conversion can also be used with the nullable versions of these data types.

  • 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 doesn't compile: Nullable<Nullable<int>> n;

Pour plus d’informations, consultez les rubriques Utilisation de types Nullable et Guide pratique pour identifier un type Nullable.For more information, see the Using nullable types and How to: Identify a nullable type topics.

Voir aussiSee also