Почему это «так близко, но так далеко», если заявление? - PullRequest
0 голосов
/ 25 ноября 2008

Я работаю над оператором If и хочу выполнить два условия, чтобы игнорировать цикл. Сначала это казалось легким, но сейчас ... я не знаю. это моя дилемма ...

if((radButton1.checked == false)&&(radButton2.checked == false))
{
    txtTitle.Text = "go to work";
}

Дилемма "идти на работу" не выполняется, если radButton1 равен false, а radButton2 равен true. Разве не требуется, чтобы оба условия были ложными, чтобы пропустить утверждение?

Ответы [ 7 ]

17 голосов
/ 25 ноября 2008

Нет, требуется, чтобы они оба были ложными для выполнения оператора.

12 голосов
/ 25 ноября 2008

Нет, требуется, чтобы оба условия были ложными для выполнения оператора. Прочитайте еще раз:

if ((radButton1.checked == false) && (radButton2.checked == false)) {
    txtTitle.Text = "Go to work";
}

На английском языке: «Если radButton1.checked равен false, а radButton2.checked равен false, установите txtTitle.Text для «Перейти на работу».

Если вы хотите пропустить утверждение, когда оба условия ложны, тогда отрицайте свою логику, например:

if ((radButton1.checked == true) || (radButton2.checked == true)) {
    txtTitle.Text = "Go to work";
}

В переводе на английский это будет звучать так: «Если radButton1.checked равен true или radButton2.checked равен true, то установите текст« Перейти к работе »». Это означает, что если какое-либо условие истинно, оно выполнит оператор или, если оба ложно, пропустит его.

9 голосов
/ 25 ноября 2008

Скажем, у меня есть две переменные с именами A и B

Если A и B имеют эти значения

A     true    true    false   false
B     true    false   true    false

тогда эти операции возвращают

AND   true    false   false   false
OR    true    true    true    false
XOR   false   true    true    false
NAND  false   true    true    true
NOR   false   false   false   true
XNOR  true    false   false   true

Обратите внимание, что нижние 3 во второй таблице являются логическими противоположностями (то есть они НЕ применены) верхних 3 в той же таблице.

2 голосов
/ 25 ноября 2008

сравнение с истинным (или ложным) совершенно не нужно:

if(!((radButton1.checked == true)&&(radButton2.checked == true))) { ... }

становится

if( !(radButton1.checked && radButton2.checked) ) { ... }

или в равной степени

if( !radButton1.checked || !radButton2.checked ) { ... }
2 голосов
/ 25 ноября 2008

В вашем примере он будет выполнять ТОЛЬКО код txtTitle.Text ="go to work", если ОБА кнопки будут ложными. Так что если кто-то истинен, а кто-то ложен, он пропустит утверждение.

0 голосов
/ 25 ноября 2008

Я получил его на работу. Я вижу, что они оба должны быть ложными для выполнения оператора, для этого оператора способ удовлетворить оба условия - использовать

if(!((radButton1.checked == true)&&(radButton2.checked == true)))
{
    ...
}
0 голосов
/ 25 ноября 2008

Нет. Требуется, чтобы одно из этих утверждений было ложным, чтобы пропустить. Посмотрите на ваш, если:

if (condition1 && condition2) {
    doSomething();
}

Таким образом, если условие1 ИЛИ условие2 не соответствует действительности, оно не будет выполнено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...