Gewusst wie: Sichere Umwandlung von bool? in bool (C#-Programmierhandbuch)

Der bool?-Typ, der NULL-Werte zulässt, kann drei verschiedene Werte enthalten: true, false und null. Aus diesem Grund kann der bool?-Typ nicht in Bedingungen mit if, for oder while verwendet werden. Beispielsweise verursacht der folgende Code einen Compilerfehler:

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

Dies ist nicht zulässig, da unklar ist, was null im Kontext eines bedingten Ausdrucks bedeutet. Wenn Sie bool? in einer bedingten Anweisung verwenden möchten, überprüfen Sie zunächst die HasValue-Eigenschaft, um sicherzustellen, dass der Wert nicht null ist, und wandeln Sie den Typ dann in bool um. Weitere Informationen finden Sie unter bool. Wenn Sie die Umwandlung für einen bool?-Typ mit dem Wert null durchführen, wird bei der Prüfung eine InvalidOperationException ausgelöst. Das folgende Beispiel zeigt eine Möglichkeit, bool? sicher in bool umzuwandeln:

Beispiel

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

Siehe auch

Referenz

Literalschlüsselwörter (C#-Referenz)

Typen, die NULL-Werte zulassen (C#-Programmierhandbuch)

Konzepte

C#-Programmierhandbuch