Por que isso é um “tão perto e tão longe” if?
Pergunta
Eu estou trabalhando em uma instrução If e quero satisfazer duas condições a ignorar o loop. Este parecia fácil no início, mas agora ... eu não sei. este é o meu dilema ...
if((radButton1.checked == false)&&(radButton2.checked == false))
{
txtTitle.Text = "go to work";
}
O dilema é "ir trabalhar" não é executado se radButton1 é falso e radButton2 é verdade. não deve exigir tanto as condições para ser falso, a fim de ignorar a declaração?
Solução
Não, não os obriga a ser ambos falsos para Executar o comunicado.
Outras dicas
Não, ele requer ambas as condições para ser falso para executar o comunicado. Leia novamente:
if ((radButton1.checked == false) && (radButton2.checked == false)) {
txtTitle.Text = "Go to work";
}
Em Inglês: "Se radButton1.checked é falso e radButton2.checked é falsa, em seguida, definir o txtTitle.Text para "ir trabalhar".
Se você quiser pular a declaração quando ambas as condições são falsas, em seguida, negar a sua lógica, como este:
if ((radButton1.checked == true) || (radButton2.checked == true)) {
txtTitle.Text = "Go to work";
}
Esta traduzida em Inglês seria: "Se radButton1.checked é verdadeira ou radButton2.checked é verdade, então definir o texto para" ir trabalhar". Isto significa que se qualquer condição for verdadeira, ele irá executar a instrução, ou, se ambas são falsas, ignorá-lo.
Digamos que eu tenha duas variáveis ??chamado A
e B
Se A e B têm esses valores
A true true false false
B true false true false
, em seguida, essas operações retornar
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
Note que o fundo 3 na segunda tabela são os opostos lógicos (ou seja, eles não tinham aplicados) do top 3 na mesma tabela.
comparando com verdadeiro (ou falso) é totalmente desnecessária:
if(!((radButton1.checked == true)&&(radButton2.checked == true))) { ... }
se torna
if( !(radButton1.checked && radButton2.checked) ) { ... }
ou igualmente
if( !radButton1.checked || !radButton2.checked ) { ... }
No seu exemplo ele só irá executar o código txtTitle.Text ="go to work"
se ambos os botões são falsas. Então, sendo um verdadeiro e um ser falsa, salta o comunicado.
No. Ela exige uma daquelas afirmações ser falsa para pular. Olhe para o seu caso:
if (condition1 && condition2) {
doSomething();
}
Então, se condition1 OU condition2 não é verdade, então ele não será executado.
Eu tenho que trabalhar. Vejo que ambos necessidade de ser falsa para executar a instrução, para que a declaração, a maneira de satisfazer as duas condições é usando
if(!((radButton1.checked == true)&&(radButton2.checked == true)))
{
...
}