Compartir a través de


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

Actualización: noviembre 2007

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, este código no se puede compilar con Error del compilador CS0266:

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

Conceptos

Guía de programación de C#

Referencia

Palabras clave de literales (Referencia de C#)

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