C#我如何使用“||”与“!=”结合使用?

时间:2008-12-17 00:04:01

标签: c#

为什么要添加“||”在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"
 }

全部谢谢

4 个答案:

答案 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来实现所需的行为......