Como você converter um anulável bool?
a bool
em C #?
Eu tentei x.Value
ou x.HasValue
...
Você precisa decidir o que o bool nulo representará. Se null
for false
, você pode fazer isso:
bool newBool = x.HasValue ? x.Value : false;
Ou:
bool newBool = x.HasValue && x.Value;
Ou:
bool newBool = x ?? false;
VB.NET
se você fizerdim newBool as Boolean = CBool(x)
:? Seránull
convertido parafalse
ou será lançada uma exceção?Linq
cláusula 'Ação rápida' para uma declaração 'Onde', eu não conseguia entender porlifted operators
que parecia não funcionar no Linq (talvez seja apenas o VB.NET?) - Acabei de testar e ele faz lançar uma exceção de elenco inválidoVocê pode usar o operador coalescentes nulo :
x ?? something
, ondesomething
é um valor booleano que você deseja usar, sex
énull
.Exemplo:
newBool
será falso.fonte
bool? myBool = null; bool newBool = myBool ?? false;
Você pode usar o
Nullable{T}
GetValueOrDefault()
método Isso retornará false se nulo.fonte
if (nullableBool.GetValueOrDefault())
Se você usar o
bool?
em umaif
declaração, acho que a coisa mais fácil é comparar com umtrue
ou outrofalse
.Obviamente, você também pode comparar com nulos.
Se você deseja convertê-lo em um booleano para passar para outras partes do aplicativo, o operador Null Coalesce é o que você deseja.
Se você já verificou nulo e deseja apenas o valor, acesse a propriedade Value.
fonte
A maneira mais fácil é usar o operador coalescente nulo:
??
Os
??
valores com valor nulo funcionam examinando a expressão nulo fornecida. Se a expressão anulável tiver um valor, seu valor será usado. Caso contrário, ela usará a expressão à direita de??
fonte
fonte
A maneira completa seria:
Ou você pode testar valores específicos usando
fonte
Algo como:
fonte
Esta resposta é para o caso de uso em que você simplesmente deseja testar a
bool?
condição. Também pode ser usado para obter um normalbool
. É uma alternativa que eu pessoalmente acho mais fácil de ler do que acoalescing operator ??
.Se você deseja testar uma condição, pode usar este
O acima se será verdadeiro somente se o
bool?
for verdadeiro.Você também pode usar isso para atribuir um regular
bool
de umbool?
bruxa é o mesmo que
fonte
Esta é uma variação interessante sobre o tema. No primeiro e no segundo olhar, você presumiria que o ramo verdadeiro foi obtido. Não tão!
A maneira de conseguir o que deseja é fazer o seguinte:
fonte
System.Convert funciona bem por mim.
using System; ... Bool fixed = Convert.ToBoolean(NullableBool);
fonte