为什么要添加“||”在2“!=”之间或者对我不起作用?
当'name'是“test”或“test2”时,如果我使用2“!=”我的if语句不起作用,但如果我只使用它,请告诉我原因。
if (col.Name != "test" || col.Name != "test2")
{
MessageBox.Show("No" + col.Name.ToString()); //This shows "No test" and "No test2"
}
else
{
MessageBox.Show("YES " + col.Name.ToString()); //does not reach here
}
这不用“||”。
if (col.Name != "test")
{
MessageBox.Show("No" + col.Name.ToString());
}
else
{
MessageBox.Show("YES " + col.Name.ToString()); //Shows "YES test"
}
全部谢谢
答案 0 :(得分:17)
试试这个:
col.Name != "test" && col.Name != "test2"
考虑一下......“如果数字不是1,或数字不是2”将始终为真,因为没有数字同时为1 和 2使两半都为假。现在将其扩展为字符串。
答案 1 :(得分:7)
它有效,但它不是你想要的。
col.Name != "test" || col.Name != "test2"
总是返回true ,因为如果col.Name是“test”,那么不是“test2”,所以你有“false || true”=>真正。如果col.Name是“test2”,则会得到“true || false”。 如果是其他任何东西,它的评估结果为“true || true”。
我无法确定你想要做什么,但你可能需要和它们之间的(&&
)。
答案 2 :(得分:4)
你需要做一个AND而不是OR:)
伪代码:
如果string1不等于测试且不等于test2而不是...
以下是更正的版本:
if (col.Name != "test" && col.Name != "test2")
{
MessageBox.Show("No" + col.Name.ToString()); //This shows "No test" and "No test2"
}
else
{
MessageBox.Show("YES " + col.Name.ToString()); //does not reach here
}
答案 3 :(得分:4)
您正在使用OR,请考虑真值表:
p q p || q
true true true
true false true
false true true
false false false
您应该使用AND来实现所需的行为......