Compartir a través de


Cómo: Convertir con seguridad de bool? en bool (Guía de programación de C#)

El tipo bool?, que acepta valores NULL, puede tener tres valores diferentes: true, false y null. Por consiguiente, el tipo bool? no se puede utilizar en instrucciones condicionales con if, for o while. Por ejemplo, el código siguiente provoca un error del compilador.

bool? b = null;
if (b) // Error CS0266.
{
}

Esto no está permitido porque el significado de null en el contexto de una instrucción condicional es incierto. Para utilizar un tipo bool? en una instrucción condicional, compruebe primero su propiedad HasValue para asegurarse de que su valor no es null, y, a continuación, conviértalo a bool. Para obtener más información, vea bool. Si convierte un tipo bool? que tiene un valor null, se producirá una excepción InvalidOperationException durante la comprobación de instrucciones condicionales. En el ejemplo siguiente se muestra una manera segura de convertir bool? en bool:

Ejemplo

bool? test = null;
// Other code that may or may not
// give a value to test.
if(!test.HasValue) //check for a value
{
    // Assume that IsInitialized
    // returns either true or false.
    test = IsInitialized();
}
if((bool)test) //now this cast is safe
{
   // Do something.
}

Vea también

Referencia

Palabras clave de literales (Referencia de C#)

Tipos que aceptan valores NULL (Guía de programación de C#)

Operador ?? (Referencia de C#)

Conceptos

Guía de programación de C#