bool?
Des chercheurs danois et suédois en sciences informatiques et systèmes autonomes ont décortiqué la sécurité...
Nvidia se prépare à livrer la plate-forme serveur HGX-2 qui sera capable d'exploiter la puissance de 16 GPU Tesla V100...
L'EMD, une école de commerce située à Marseille ouvre à la prochaine rentrée l'école du numérique...
System.Nullable‹T›
.
Les types Nullable peuvent représenter toutes les valeurs d'un type sous-jacent T
ainsi qu'une autre valeur null
.
Le type sous-jacent T
peut être n'importe quel type valeur non nullable. T
ne peut pas être un type référence.Int32.MinValue
à Int32.MaxValue
à un Nullable‹int›
et true,
false ou null à un Nullable‹bool›
.Nullable‹bool›
dans ce cas.null
.
Il n'est pas possible de créer un type Nullable à partir d'un type référence.
(Les types référence prennent déjà en charge la valeur null
.)T?
est l'abréviation de Nullable‹T›
.
Les deux formats sont interchangeables.int? x = 10;
ou double? d = 4.108;
.
Vous pouvez également affecter la valeur null : int? x = null
;.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;
HasValue
retourne true
si la variable contient une valeur, ou false
si elle est null
.Value
retourne une valeur si HasValue
retourne true.
Sinon, une exception InvalidOperationException
est levée.==
et !=
avec un type Nullable, comme le montre l'exemple suivant : if (x != null) y = x.Value;
.
Si a
et b
sont tous les deux null
, a == b
prend la valeur true
.if (x is int valueOfX) y = valueOfX;
.T?
est une instance dont la propriété HasValue
retourne false
.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
.GetValueOrDefault(T)
pour retourner la valeur affectée,
ou la valeur par défaut fournie si la valeur du type Nullable est null
.??
, pour affecter une valeur à un type sous-jacent basé
sur une valeur du type Nullable : int? x = null; int y = x ?? -1;
.x
est null
, la valeur de résultat de y
est -1
.Nullable‹Nullable‹int›› n;
T
ainsi qu'une autre valeur null
.
Vous pouvez faire référence à un type Nullable dans l'un des formats suivants : Nullable‹T›
ou T?
.
Ces deux formats sont interchangeables.null
. Par exemple :null
et récupérer une valeur d'un type sous-jacent,
utilisez les propriétés en lecture seule suivantes :Nullable‹T›.HasValue
indique si une instance d'un type Nullable a une valeur de son type sous-jacent.
Nullable‹T›.Value
obtient la valeur d'un type sous-jacent si HasValue
est true
.
Si HasValue
est /code>false, la propriété Value
lève une InvalidOperationException
.
HasValue
pour tester si la variable contient une valeur avant de l'afficher :null
au lieu d'utiliser la propriété HasValue
, comme le montre l'exemple suivant :??
pour spécifier la valeur à affecter si une valeur
de type Nullable est null
(vous pouvez également utiliser pour cela la méthode Nullable‹T›.GetValueOrDefault(T))
:Nullable‹T›.GetValueOrDefault()
si la valeur à utiliser quand une valeur de type Nullable est null
doit être la
valeur par défaut du type valeur sous-jacent.null
, le cast explicite lève une InvalidOperationException
.
Un type valeur non Nullable est implicitement converti en type Nullable correspondant.null
si l'un des opérandes ou les deux sont null
;
sinon, l'opérateur utilise les valeurs contenues pour calculer le résultat. Par exemple :<, >, <=, >=
), si l'un des opérandes ou les deux sont null
, le résultat est false
.
Ne partez pas du principe que parce qu'une comparaison spécifique (par exemple <=
) retourne false
,
la comparaison opposée (>
) retourne true
. L'exemple suivant montre que 10
n'estnull
,null
.null
donne la valeur true
.HasValue
retourne false
, la référence null
est générée.HasValue
retourne true
, une valeur du type valeur sous-jacent T
est boxed, pas l'instance de Nullable‹T›
.System.Type
représente un type nullable générique fermé,
autrement dit, le type System.Nullable‹T›
avec un paramètre de type spécifié T
:typeof
pour créer un objet System.Type
.Object.GetType
pour obtenir une instance Type à tester avec le code précédent.
Quand vous appelez la méthode Object.GetType
sur une instance d'un type Nullable, l'instance est boxed à Object.
Comme le boxing d'une instance non nulle d'un type Nullable équivaut au boxing d'une valeur du type sous-jacent, GetType
retourne un objet Type qui représente le
type sous-jacent d'un type Nullable :bool?
peut contenir trois valeurs différentes : true
, false
et Null
.
Le type bool?
est comme le type de variable booléen utilisé dans SQL.
Pour vérifier que les résultats produits par les opérateurs &
et |
sont cohérents avec le type booléen à trois valeurs dans SQL,
les opérateurs prédéfinis suivants sont fournis :bool? operator &(bool? x, bool? y)
bool? operator |(bool? x, bool? y)
x | o | x&y | x|y |
---|---|---|---|
true |
true |
true |
true |
true |
false |
false |
true |
true |
null |
null |
true |
false |
true |
false |
true |
false |
false |
false |
false |
false |
null |
false |
null |
null |
true |
null |
true |
true |
false |
false |
true |
null |
null |
null |
null |
null
.