Поделиться через


Практическое руководство. Безопасное приведение bool? к bool (Руководство по программированию на C#)

Допускающий значение NULL тип bool? может содержать три различных значения: true, false и null. Поэтому тип bool? нельзя использовать в условных выражениях, например, с операторами if, for или while. Например, следующий код вызовет ошибку компиляции.

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

Это запрещено, поскольку неизвестно, что обозначает null в контексте условного выражения. Чтобы использовать bool? в условном операторе, сначала проверьте его свойство HasValue, чтобы убедиться, что его значение отлично от null, а затем приведите его к bool. Дополнительные сведения см. в описании bool. Если выполняется приведение bool? со значением null, при проверке условия вызывается исключение InvalidOperationException. В следующем примере показан способ безопасного приведения от bool? к bool:

Пример

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.
}

См. также

Ссылки

Буквенные ключевые слова (справочник по C#)

Типы, допускающие значения NULL (Руководство по программированию на C#)

Оператор ?? (справочник по C#)

Основные понятия

Руководство по программированию на C#