为什么这个IF语句返回false?

Joh*_*ius 6 .net c#

我有两个文本框,我想在两个文本都为空时跳过一段代码:

if (txtBox1.Text.Trim() != string.Empty && txtBox2.Text.Trim() != string.Empty )
{
     // Do something
}
Run Code Online (Sandbox Code Playgroud)

如果任何一个文本框都有,我想要//执行某些部分.只有当两者都是空的时候我才想跳过.

但是上面的代码片段不起作用.为什么?

Cri*_*onX 24

我相信你的逻辑运算符混乱了.你在寻找什么

if (txtBox1.Text.Trim() != string.Empty || txtBox2.Text.Trim() != string.Empty )
{
     // Do something
}
Run Code Online (Sandbox Code Playgroud)

  • 它比C#更常见的逻辑错误.欲了解有关[Contrapositives] [1]的兴趣.[1]:http://en.wikipedia.org/wiki/Contraposition (2认同)

Tho*_*ens 11

你应该更换你&&||.目前,if只有当两个文本字段都包含文本时,才会执行块中的代码.


Dan*_*Tao 6

那些指出你需要||的人 而不是&&是对的.如果你喜欢&&,你也可以使用:

if (!(txtBox1.Text.Trim() == string.Empty && txtBox2.Text.Trim() == string.Empty))
{
     // Do something
}
Run Code Online (Sandbox Code Playgroud)

差异纯粹是美学,但相当于检查(用英语):" 两个文本框都是空的并不是真的"而不是"至少有一个文本框不是空的." 同样的意思,不同的方式.

为了记录,你在原始问题中的方式是:"两个文本框都不是空的."