Compartilhar via


Como converter bool? em bool com segurança (Guia de Programação em C#)

O tipo anulável bool? pode conter três valores diferentes: true, false e null. Portanto, o tipo bool? não pode ser usado em condicionais como if, for ou while. Por exemplo, o código a seguir causa um erro do compilador.

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

Isso não é permitido porque não fica claro o que null significa no contexto de um condicional. Para usar bool? em uma instrução condicional, verifique primeiro sua propriedade de HasValue para garantir que o valor não é null, e para convertê-lo para bool. Para obter mais informações, consulte bool. Se você realizar a conversão em um bool? com um valor de null, InvalidOperationException será lançado no teste condicional. O exemplo a seguir mostra uma maneira de converter com segurança de 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 literais (Referência de C#)

Tipos anuláveis (Guia de Programação em C#)

Operador ?? (Referência de C#)

Conceitos

Guia de Programação em C#