У меня есть такое состояние:
if (!(InRange1 || InRange2 || InRange3))
{
//Do Something
}
Каждая из переменных InRange является логическим значением.
Желаемое поведение: если какое-либо из этих значений имеет значение False, я хочу что-то сделать, но это не работает. Все значения должны быть ложными до запуска события.
Нужно ли писать так
if (!InRange1 || !InRange2 || !InRange3)
{
//do something
}
И в любом случае мне любопытно, почему исходное утверждение не работает.
x = (a || b || c); return not x;
. Всегда разбивайте сложные выражения на отдельные строки, так их гораздо легче уложить в голове. (альтернатива - заучивание имен мертвых логиков в верблюжьей оболочке, что не является выгодным использованием вашего времени) - person 15ee8f99-57ff-4f92-890c-b56153   schedule 19.09.2016(InRange1 || InRange2 || InRange3)
... что вы ожидаете от него в разных случаях? Затем помните, что вы инвертируете его с помощью!
... но вы инвертируете весь результат. - person Jon Skeet   schedule 19.09.2016!
перед скобками вот так, вы говоритеnegate everything that is inside the parenthesis
. Таким образом, все, что в этих скобках былоtrue
, становитсяfalse
и наоборот. - person Lews Therin   schedule 19.09.2016