tipos tipo puede objeto implícitamente error datos dato cs0029 convertir como bool c# nullable

c# - objeto - no se puede convertir implícitamente el tipo bool en bool



¿No se puede convertir implícitamente el tipo bool? (3)

Estoy intentando convertir mi valor bool anulable y recibo este error.

Cannot implicitly convert type ''bool?'' to ''bool''. An explicit conversion exists (are you missing a cast?)

Por ejemplo:

public virtual bool? MyBool { get; set; } if (!MyBool){}


Como dice el error, no puedes usar un bool? en un condicional. (¿Qué pasaría si es null ?)

En su lugar, puede escribir if (MyBool != true) o if (MyBool == false) , dependiendo de si desea incluir null . (y deberías agregar un comentario explicando eso)


Es necesario comprobar si tiene un valor. ¿Qué quieres hacer si MyBool == null ?

if( MyBool.HasValue && !MyBool.Value ) // MyBool is false if( MyBool.HasValue && MyBool.Value ) // MyBool is true if( !MyBool.HasValue ) // MyBool is null


Tienes que usar MyBool.Value

por ejemplo:

if (!MyBool.Value) { }

Sin embargo, debe probar que sí tiene un valor para empezar. Esto prueba que MyBool tiene un valor y es falso.

if (MyBool.HasValue && !MyBool.Value) { }

O puede que realmente desee lo siguiente que ejecuta el bloque de código si no se ha asignado o si es falso.

if (!MyBool.HasValue || !MyBool.Value) { }

La pregunta realmente se reduce a si realmente pretendía tener una variable booleana que pueda contener null, true or false y, de ser así, cómo quiere manejar las 3 condiciones posibles de null, true or false .