operator - string null c#
Convierte bool nullable? bool (10)
Algo como:
if (bn.HasValue)
{
b = bn.Value
}
¿Cómo se convierte un bool?
Nullable bool?
bool
en C #?
He intentado x.Value
o x.HasValue
...
En última instancia, debes decidir qué representará el null bool. Si null
debe ser false
, puede hacer esto:
bool newBool = x.HasValue ? x.Value : false;
O:
bool newBool = x.HasValue && x.Value;
O:
bool newBool = x ?? false;
Esta es una variación interesante sobre el tema. En las primeras y segundas miradas, supondrías que se toma la rama verdadera. ¡No tan!
bool? flag = null;
if (!flag ?? true)
{
// false branch
}
else
{
// true branch
}
La forma de obtener lo que quieres es hacer esto:
if (!(flag ?? true))
{
// false branch
}
else
{
// true branch
}
Esta respuesta es para el caso de uso cuando simplemente quieres probar el bool?
en una condición También se puede usar para obtener un bool
normal. ¿Es una alternativa que personalmente encuentro más fácil de leer que el coalescing operator ??
.
Si desea probar una condición, puede usar esto
bool? nullableBool = someFunction();
if(nullableBool == true)
{
//Do stuff
}
Lo anterior si solo será verdadero si el bool?
es verdad.
¿También puedes usar esto para asignar un bool
regular desde un bool?
bool? nullableBool = someFunction();
bool regularBool = nullableBool == true;
bruja es lo mismo que
bool? nullableBool = someFunction();
bool regularBool = nullableBool ?? false;
La forma completa sería:
bool b1;
bool? b2 = ???;
if (b2.HasValue)
b1 = b2.Value;
O puede probar valores específicos usando
bool b3 = (b2 == true); // b2 is true, not false or null
La forma más fácil es usar el operador nulo coalescente: ??
bool? x = ...;
if (x ?? true) {
}
El ??
con valores nulos que funciona al examinar la expresión anulable proporcionada. Si la expresión que admite nulos tiene un valor, se usará su valor; de lo contrario, usará la expresión a la derecha de ??
Puede usar el operador nulo-coalescente : x ?? something
x ?? something
, donde something
es un valor booleano que desea usar si x
es null
.
Ejemplo:
bool? myBool = null;
bool newBool = myBool ?? false;
newBool
será falso.
Puede usar el Nullable{T}
GetValueOrDefault()
. Esto devolverá falso si es nulo.
bool? nullableBool = null;
bool actualBool = nullableBool.GetValueOrDefault();
Si vas a usar el bool?
en una declaración if
, encuentro que lo más fácil de hacer es comparar contra true
o false
.
bool? b = ...;
if (b == true) { Debug.WriteLine("true"; }
if (b == false) { Debug.WriteLine("false"; }
if (b != true) { Debug.WriteLine("false or null"; }
if (b != false) { Debug.WriteLine("true or null"; }
Por supuesto, también puedes comparar con el nulo también.
bool? b = ...;
if (b == null) { Debug.WriteLine("null"; }
if (b != null) { Debug.WriteLine("true or false"; }
if (b.HasValue) { Debug.WriteLine("true or false"; }
//HasValue and != null will ALWAYS return the same value, so use whatever you like.
Si va a convertirlo en un bool para pasar a otras partes de la aplicación, entonces el operador Nulo Coalesce es lo que quiere.
bool? b = ...;
bool b2 = b ?? true; // null becomes true
b2 = b ?? false; // null becomes false
Si ya ha marcado nulo y solo quiere el valor, acceda a la propiedad Value.
bool? b = ...;
if(b == null)
throw new ArgumentNullException();
else
SomeFunc(b.Value);
bool? a = null;
bool b = Convert.toBoolean(a);