Partager via


Comment : effectuer sans risque un cast du type bool? en bool (Guide de programmation C#)

Mise à jour : novembre 2007

Le type nullable bool? peut contenir trois valeurs différentes : true, false et null. Par conséquent, le type bool? ne peut pas être utilisé dans des conditionnels comme if, for ou while. Par exemple, ce code ne se compile pas avec Erreur du compilateur CS0266 :

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

Cela n'est pas autorisé parce que la signification de null n'est pas claire dans le contexte d'un conditionnel. Pour utiliser un type bool? dans une instruction conditionnelle, commencez par vérifier sa propriété HasValue pour vous assurer que sa valeur n'est pas null, puis convertissez-le en un bool. Pour plus d'informations, consultez bool. Si vous effectuez le cast sur un type bool? avec une valeur null, une InvalidOperationException sera levée dans le test conditionnel. L'exemple suivant illustre comment convertir sans risque un type bool? en bool :

Exemple

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

Voir aussi

Concepts

Guide de programmation C#

Référence

Mots clés littéraux (Référence C#)

Types nullables (Guide de programmation C#)