Types de variable nullables - membre .value
Question
Je me demandais - quand voudrais-je utiliser le membre .Value sur un type nullable au lieu d'appeler la variable elle-même?
par exemple ..
bool? b = vrai;
pourquoi utiliser b.Value pour obtenir la valeur au lieu d’utiliser simplement b? Quel avantage ou quelle fonction l’appel .Value ajoute-t-il?
La solution
La propriété value est en lecture seule et renverra le type de valeur actuel. La propriété value ne peut jamais être nulle.
Si vous souhaitez que nullable renvoie une valeur, cochez .HasValue puis faites référence à Value. Par exemple, si vous voulez attribuer la valeur d'un Nullable à un bool ordinaire, vous devez référencer sa valeur:
bool? nullableBool = null;
if (nullableBool.HasValue)
{
bool realBool = nullableBool.Value;
}
Cependant, les suivants ne compileront pas:
bool? nullableBool = true;
bool realBool = nullableBool; // Won't work
Autres conseils
.Value renvoie un bool plutôt qu'un bool? ce qui vous permettra de l'utiliser comme paramètre pour des fonctions qui n'attendent pas de types nullables.
Lorsque vous souhaitez utiliser des méthodes / propriétés du type sous-jacent. Ne s'applique pas vraiment à bool. Me laisser illustrer avec DateTime
:
DateTime? d;
int month = d.Value.Month;
Vous ne pouvez pas accéder à la propriété Month directement à partir de d, car DateTime? n'a pas cette propriété.
Pour moi, ce n'est pas tant la valeur de la propriété " HasValue " que je trouve utile
La seule différence est qu’il s’agit de 2 types différents. Si vous avez un bool? , il s'agit d'un type boolé nullable.
Si vous appelez b.Value , vous retournez un bool et non un bool? .
Subtil, mais lorsque vous avez besoin de la version non nullable de l'objet, utilisez la propriété .Value.