Freigeben über


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)

?? Operator (C#-Referenz)

Konzepte

C#-Programmierhandbuch