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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top