Gewusst wie: Sichere Umwandlung von bool? in bool (C#-Programmierhandbuch)How to: Safely Cast from bool? to bool (C# Programming Guide)

Der bool?-Typ, der NULL-Werte zulässt, kann drei verschiedene Werte enthalten: true, false und null.The bool? nullable type can contain three different values: true, false, and null. Aus diesem Grund kann der bool?-Typ nicht in Bedingungen mit if, for oder while verwendet werden.Therefore, the bool? type cannot be used in conditionals such as with if, for, or while. Beispielsweise verursacht der folgende Code einen Compilerfehler:For example, the following code causes a compiler error.

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

Dies ist nicht zulässig, da unklar ist, was null im Kontext eines bedingten Ausdrucks bedeutet.This is not allowed because it is unclear what null means in the context of a conditional. 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.To use a bool? in a conditional statement, first check its HasValue property to ensure that its value is not null, and then cast it to bool. Weitere Informationen finden Sie unter bool.For more information, see 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.If you perform the cast on a bool? with a value of null, a InvalidOperationException will be thrown in the conditional test. Das folgende Beispiel zeigt eine Möglichkeit, bool? sicher in bool umzuwandeln:The following example shows one way to safely cast from bool? to bool:

BeispielExample

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 auchSee Also

C#-ProgrammierhandbuchC# Programming Guide
LiteralschlüsselwörterLiteral Keywords
Typen mit NullwertNullable Types
?? Operator?? Operator