Книга: C# 4.0: полное руководство
Обнуляемые объекты, операторы отношения и логические операторы
Обнуляемые объекты, операторы отношения и логические операторы
Обнуляемые объекты могут использоваться в выражениях отношения таким же образом, как и соответствующие объекты необнуляемого типа. Но они должны подчиняться следующему дополнительному правилу: когда два обнуляемых объекта сравниваются в операциях сравнения <
, >
, <=
или >=
, то их результат будет ложным, если любой из обнуляемых объектов оказывается пустым, т.е. содержит значение null
. В качестве примера рассмотрим следующий фрагмент кода.
byte? lower = 16;
byte? upper = null;
// Здесь переменная lower определена, а переменная upper не определена,
if(lower < upper) // ложно %
В данном случае проверка того, что значение одной переменой меньше значения другой, дает ложный результат. Хотя это и не совсем очевидно, как, впрочем, и следующая проверка противоположного характера.
if(lower > upper) // .. также ложно!
Следовательно, если один или оба сравниваемых обнуляемых объекта оказываются пустыми, то результат их сравнения всегда будет ложным. Это фактически означает, что пустое значение (null
) не участвует в отношении порядка.
Тем не менее с помощью операторов ==
и !=
можно проверить, содержит ли обнуляемый объект пустое значение. Например, следующая проверка вполне допустима и дает истинный результат.
if(upper == null) // ...
Если в логическом выражении участвуют два объекта типа bool?
, то его результат может иметь одно из трех следующих значений: true
(истинное), false
(ложное) или null
(неопределенное). Ниже приведены результаты применения логических операторов &
и |
к объектам типа bool?
.
И наконец, если логический оператор !
применяется к значению типа bool?
, которое является пустым (null
), то результат этой операции будет неопределенным (null
).
- Небезопасный код
- Обнуляемые типы
- Основы применения обнуляемых типов
- Применение обнуляемых объектов в выражениях
- Оператор ??
- Обнуляемые объекты, операторы отношения и логические операторы
- Частичные типы
- Частичные методы
- Создание объектов динамического типа
- Возможность взаимодействия с моделью СОМ
- Дружественные сборки
- Разные ключевые слова
- Обнуляемые типы
- ГЛАВА 20 Небезопасный код, указатели, обнуляемые типы и разные ключевые слова
- Логические операторы
- Операторы отношения и логические операторы
- ЧАСТЬ IV. База данных и ее объекты.
- 3.4. Отношения между классами
- Физические объекты
- Арифметические операторы
- 1.2.4. Операторы и приоритеты
- Условные операторы
- 4. Null-значения и логические операции
- 5. Отношения. Типы отношений