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)