Como: com segurança a conversão da bool? para bool (C# Programming Guide)
O bool? tipo anulável pode conter três valores diferentes: true, false, e null.Portanto, o bool? tipo não pode ser usado em condicionais, como com if, for, ou while.Por exemplo, o código a seguir faz com que um erro do compilador.
bool? b = null;
if (b) // Error CS0266.
{
}
Isso não é permitido porque não está claro o que null significa no contexto de uma condicional.Para usar um bool? em uma instrução condicional, primeiro verifique seu HasValue propriedade para garantir que seu valor não é nulle, em seguida, converta-a bool.Para obter mais informações, consulte bool.Se você executar a conversão em um bool? com um valor de null, um InvalidOperationException será lançada no teste condicional.O exemplo a seguir mostra uma maneira de converter com segurança do bool? para bool:
Exemplo
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.
}
Consulte também
Referência
Palavras-chave literal (referência de C#)
Tipos anuláveis (guia de programação do C#)