我有两个文本框,当两者都为空时我想跳过一段代码 :
if (txtBox1.Text.Trim() != string.Empty && txtBox2.Text.Trim() != string.Empty )
{
// Do something
}
如果其中一个文本框有问题,我希望执行 // Do something 部分。只有当两者都是空的时候我才想跳过。
但是上面的代码片段不起作用。为什么呢?
答案 0 :(得分:24)
我相信你的逻辑运算符混乱了。您正在寻找的是
if (txtBox1.Text.Trim() != string.Empty || txtBox2.Text.Trim() != string.Empty )
{
// Do something
}
答案 1 :(得分:11)
您应该将&&
替换为||
。目前,if
块中的代码只有在两个文本字段都包含文本时才会执行。
答案 2 :(得分:6)
那些指出你需要的人||而不是&&是对的。如果您更喜欢&&,您还可以使用:
if (!(txtBox1.Text.Trim() == string.Empty && txtBox2.Text.Trim() == string.Empty))
{
// Do something
}
差异纯粹是审美,但相当于检查(英文):“不是真的,两个文本框都是空的”,而不是“至少有一个文本框不是'空。“同样的意思,不同的方式。
为了记录,你在原始问题中的方式是:“两个文本框都不是空的。”
答案 3 :(得分:3)
你想要||而不是&&。
答案 4 :(得分:2)
我将BothBoxesEmpty拆分为一个单独的变量以使其更具可读性...否则所有括号都变得难以理解。如果您选择,可以合并这两个语句:
bool BothBoxesEmpty = string.IsNullOrEmpty(TextBox1.Text.Trim()) &&
string.IsNullOrEmpty(TextBox2.Text.Trim());
if (!BothBoxesEmpty)
{
/* Do your stuff */
}
你可以同样轻松地将{。{1}}替换为字符串.IsNullOrEmpty为TextBox1.Text.Trim() == string.Empty
将始终返回一个字符串(空或不),永远不会返回TextBox1.Text
。
答案 5 :(得分:1)
if (txtBox1.Text.Trim() != string.Empty || txtBox2.Text.Trim() != string.Empty )
{
// Do something
}
你正在使用&&
,这将要求他们同时不是空的。您应该使用||
(OR)来获得所需的结果。
答案 6 :(得分:0)
可能更容易理解:
if (!(txtBox1.Text.Trim() == string.Empty && txtBox2.Text.Trim() == string.Empty ))
{
// Do something
}
答案 7 :(得分:0)
如果你使用某种方法,你也可以这样做:
if (txtBox1.Text.Trim() == string.Empty && txtBox2.Text.Trim() == string.Empty )
return;
//Do Something
答案 8 :(得分:0)
你可以通过连接字符串,然后测试来使它更简洁:
if ((txtBox1.Text.Trim() + txtBox2.Text.Trim()) != string.Empty )
{
// Do something
}
根据方框所代表的内容,这可能不太明显。
答案 9 :(得分:0)
这让我想起了一个关于一名初级程序员的故事,他被告知要实施计算保险福利的规则,其中“18岁以上和65岁以上的所有人”没有资格。所以他将其编码为:
if (age < 18 and age > 65) ...
故事说他的同事一再试图说服他的逻辑不正确,但他固执地拒绝理解或改变它。