Comment convertir un annulable bool?
à bool
en C #?
J'ai essayé x.Value
ou x.HasValue
...
Vous devez en fin de compte décider de ce que représentera la valeur booléenne nulle. Si cela null
devrait être false
, vous pouvez le faire:
bool newBool = x.HasValue ? x.Value : false;
Ou:
bool newBool = x.HasValue && x.Value;
Ou:
bool newBool = x ?? false;
VB.NET
si vous faitesdim newBool as Boolean = CBool(x)
:? Seranull
converti enfalse
ou une exception sera-t-elle levée?Linq
déclaration `` Où '', je ne pouvais pas comprendre pourquoilifted operators
ne semblait pas fonctionner à l'intérieur de Linq (peut-être que c'est juste VB.NET?) - Je viens de tester et il jette une exception de distribution invalideVous pouvez utiliser l' opérateur null coalescent :
x ?? something
oùsomething
est une valeur booléenne que vous souhaitez utiliser six
estnull
.Exemple:
newBool
sera faux.la source
bool? myBool = null; bool newBool = myBool ?? false;
Vous pouvez utiliser la
Nullable{T}
GetValueOrDefault()
méthode. Cela renverra false si nul.la source
if (nullableBool.GetValueOrDefault())
Si vous allez utiliser le
bool?
dans uneif
déclaration, je trouve que la chose la plus simple à faire est de comparer avec l'untrue
ou l' autrefalse
.Bien sûr, vous pouvez également comparer avec null.
Si vous allez le convertir en booléen pour le transmettre à d'autres parties de l'application, alors l'opérateur Null Coalesce est ce que vous voulez.
Si vous avez déjà vérifié la valeur null et que vous voulez simplement la valeur, accédez à la propriété Value.
la source
Le moyen le plus simple consiste à utiliser l'opérateur de fusion nul:
??
Le
??
with nullable values fonctionne en examinant l'expression nullable fournie. Si l'expression Nullable a une valeur, sa valeur sera utilisée sinon elle utilisera l'expression à droite de??
la source
la source
Le moyen complet serait:
Ou vous pouvez tester des valeurs spécifiques en utilisant
la source
Quelque chose comme:
la source
Cette réponse est pour le cas d'utilisation où vous souhaitez simplement tester le
bool?
dans une condition. Il peut également être utilisé pour obtenir un résultat normalbool
. C'est une alternative que je trouve personnellement plus facile à lire que lecoalescing operator ??
.Si vous souhaitez tester une condition, vous pouvez utiliser ceci
Ce qui précède ne sera vrai que si le
bool?
est vrai.Vous pouvez également l'utiliser pour attribuer un régulier à
bool
partir d'unbool?
la sorcière est la même que
la source
Ceci est une variation intéressante sur le thème. Au premier et au deuxième regard, vous supposeriez que la vraie branche est prise. Pas si!
La façon d'obtenir ce que vous voulez est de faire ceci:
la source
System.Convert fonctionne très bien par moi.
using System; ... Bool fixed = Convert.ToBoolean(NullableBool);
la source