为什么这是一个“如此接近但迄今为止”的陈述?

时间:2008-11-25 16:49:28

标签: c# .net logic

我正在处理一个If语句,我想满足两个条件来忽略循环。起初这似乎很容易,但现在......我不知道。这是我的困境......

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

如果radButton1为false且radButton2为true,则不执行“go to work”的困境。为了跳过声明,它不应该要求两个条件都是假的吗?

7 个答案:

答案 0 :(得分:17)

不,它要求它们都是假的执行语句。

答案 1 :(得分:12)

不,它要求执行语句的两个条件都是假的。再读一遍:

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,则将文本设置为'Go to work'”。这意味着如果任何条件为真,它将执行该语句,或者,如果两者都为假,则跳过它。

答案 2 :(得分:9)

假设我有两个名为AB

的变量

如果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个的逻辑对立面(即它们没有应用)。

答案 3 :(得分:2)

在您的示例中,如果BOTH按钮为false,它将仅执行txtTitle.Text ="go to work"代码。所以一个是真的,一个是假的,它会跳过这个陈述。

答案 4 :(得分:2)

与true(或false)比较完全没必要:

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

变为

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

或同样

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

答案 5 :(得分:0)

没有。它要求其中一个语句为false才能跳过。看看你的if:

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

因此,如果condition1 OR condition2不为true,那么它将不会执行。

答案 6 :(得分:0)

我得到了它的工作。我看到他们都需要是假的来执行语句,对于那个语句,满足这两个条件的方法是使用

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