7
votes

Types de variable nullables -. MembreValeur

Je me demandais - quand voudrais-je utiliser le membre de .Value sur un type nullable au lieu d'appeler la variable elle-même?

E.g ..

bool? b = vrai;

Pourquoi devrais-je utiliser B.Value pour obtenir la valeur au lieu de simplement utiliser b? Quel avantage ou fonction le .value appelle-t-il Ajouter?


0 commentaires

5 Réponses :


3
votes

.Value retourne un bool plutôt qu'un bool? qui vous permettra de l'utiliser comme paramètre pour fonctionner qui ne vous attendez pas à des types nullables.


0 commentaires

1
votes

La seule différence est qu'ils sont 2 types différents. Si vous avez un bool? alors c'est un type nullable de bool.

Si vous appelez B.Value Vous retournerez réellement 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.


0 commentaires

1
votes

Pour moi, ce n'est pas tant de valeur que la propriété "Hasvalue" que je trouve utile


0 commentaires

2
votes

Lorsque vous souhaitez utiliser des méthodes / propriétés du type sous-jacent. Ne s'applique pas vraiment à Bool. Laissez-moi illustrer avec DateTime : xxx

Vous ne pouvez pas accéder à la propriété du mois directement à partir de D, car DateTime? n'a pas cette propriété.


0 commentaires

13
votes

La propriété de valeur est en lecture seule et retournera le type de valeur réelle. La propriété Value ne peut jamais être nulle.

Si vous vous attendez à avoir une validation nullable, vérifiez. Vérifiez .HASValue, puis valeur de référence. Par exemple, si vous souhaitez attribuer la valeur d'une nullable à un bool ordinaire, vous devez vous référencer de la valeur: p> xxx pré>

Cependant, les ne seront pas em> Compiler: P>

bool? nullableBool = true;
bool realBool = nullableBool; // Won't work


1 commentaires

Super! Ça a du sens. Merci beaucoup :))