propiedad operator has c# nullable

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);