2009-09-05 5 views
0

В C#, например, когда я сравниваю два NULLABLE булевы (bool?) Я получаю следующие результаты:Как определить результат логического оператора с нулевыми булевыми значениями?

true & null = null 
false & null = false 
true | null = true 
false | null = null 

Вопрос заключается в том, что я не мог понять, каким образом эти результаты приходят, что такое правило, которое я могу использовать для определения результата логического оператора по двум логическим значениям, когда один из них является нулевым?

ответ

11

Идея состоит в том, что «null» означает «неизвестно» здесь, или «недостаточно информации». Поэтому, если ответ зависит от неизвестного значения, сам ответ неизвестен. Если ответ будет таким же, как и неизвестное значение (например, true | null), тогда вы все еще в порядке.

Подумайте об этом так:

y = true & x; // the result will be the same as the value of x (it depends on x) 
y = true | x; // the result will be true whatever x is 
+0

Спасибо, я понимаю, что сейчас! –

+0

Я думаю, вы имели в виду, что «это должно быть x', а не' it должно быть истинным »в первом комментарии, т. Е. Y будет тем, что будет x. – GDS

+0

@GDS: Ну, я имел в виду, что «x должен быть правдой для y, чтобы быть правдой» на самом деле, но я буду редактировать для ясности. –

 Смежные вопросы

  • Нет связанных вопросов^_^