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


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

Обновлен: Ноябрь 2007

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

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#

Ссылки

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

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