Condividi tramite


Procedura: eseguire il cast sicuro da bool? a bool (Guida per programmatori C#)

Il tipo bool? nullable può contenere tre valori diversi: true, false e null. Non è pertanto possibile utilizzare il tipo bool? in istruzioni condizionali, ad esempio con if, for o while. Il codice seguente, ad esempio, causa un errore del compilatore:

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

Questa operazione non è consentita, in quanto il significato di null non è chiaro nel contesto di un'istruzione condizionale. Per utilizzare un valore bool? in un'istruzione condizionale, controllare innanzitutto la proprietà HasValue per garantire che il valore non sia null, quindi eseguire il cast a bool. Per ulteriori informazioni, vedere bool. Se si esegue il cast su un valore bool? con valore null, verrà generata un'eccezione InvalidOperationException nel test condizionale. Nell'esempio seguente viene illustrato un modo per eseguire il cast in modo sicuro da bool? a bool:

Esempio

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

Vedere anche

Riferimenti

Parole chiave letterali (Riferimenti per C#)

Tipi nullable (Guida per programmatori C#)

Concetti

Guida per programmatori C#