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


Практическое руководство. Безопасное приведение 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#