Pourquoi est-ce un "si proche et pourtant si loin" & # 8221; si déclaration?
Question
Je travaille sur une instruction If et je souhaite remplir deux conditions pour ignorer la boucle. Cela semblait facile au début, mais maintenant ... je ne sais pas. c'est mon dilemme ...
if((radButton1.checked == false)&&(radButton2.checked == false))
{
txtTitle.Text = "go to work";
}
Le dilemme est "aller au travail". n'est pas exécuté si radButton1 est false et radButton2 est true. Ne devrait-il pas exiger que les deux conditions soient fausses pour ignorer la déclaration?
La solution
Non, les deux doivent être faux pour exécuter l'instruction.
Autres conseils
Non, il faut que les deux conditions soient fausses pour exécuter la déclaration. Relire:
if ((radButton1.checked == false) && (radButton2.checked == false)) {
txtTitle.Text = "Go to work";
}
En anglais: "Si radButton1.checked est false ET que radButton2.checked est false, définissez le txtTitle.Text à 'Aller au travail' ".
Si vous souhaitez ignorer la déclaration lorsque les deux conditions sont fausses, annulez votre logique, comme ceci:
if ((radButton1.checked == true) || (radButton2.checked == true)) {
txtTitle.Text = "Go to work";
}
Ce texte traduit en anglais se lirait ainsi: "Si radButton1.checked est vrai OU radButton2.checked est vrai, définissez le texte sur 'Aller au travail'". Cela signifie que si une condition est vraie, elle exécutera l'instruction ou, si les deux sont fausses, elle sera ignorée.
Disons que j'ai deux variables nommées A
et B
Si A et B ont ces valeurs
A true true false false
B true false true false
puis ces opérations retournent
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
Notez que les 3 derniers de la deuxième table sont les opposés logiques (c'est-à-dire qu'ils n'ont PAS été appliqués) des 3 premiers de la même table.
comparer à vrai (ou faux) est totalement inutile:
if(!((radButton1.checked == true)&&(radButton2.checked == true))) { ... }
devient
if( !(radButton1.checked && radButton2.checked) ) { ... }
ou également
if( !radButton1.checked || !radButton2.checked ) { ... }
Dans votre exemple, il exécutera UNIQUEMENT le code txtTitle.Text = "aller au travail" si les DEUX boutons sont faux. Donc, si l’on est vrai et l’autre qui est faux, la déclaration sera ignorée.
Non. Il faut que l'une de ces déclarations soit fausse pour être ignorée. Regardez votre si:
if (condition1 && condition2) {
doSomething();
}
Donc, si condition1 OU condition2 n'est pas vraie, elle ne s'exécutera pas.
Je l’ai fait au travail. Je vois qu’ils ont tous deux besoin d’être faux pour exécuter la déclaration; pour cette déclaration, le moyen de satisfaire les deux conditions consiste à utiliser
if(!((radButton1.checked == true)&&(radButton2.checked == true)))
{
...
}