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 <xref:System.Nullable%601.HasValue%2A>-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 <xref:System.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

C#-Programmierhandbuch
Literalschlüsselwörter
Typen, die NULL-Werte zulassen
?? Operator