我在表单中添加了一个标签,该标签对于user.Base在标签包含的文本上继续进行。
这是我的逻辑,但它失败了。我想这样,如果标签包含“不匹配”或“超时”,则不应该继续。
If((!label.Text.Contain("No match")) || label.Text.Contain("Time out"))
{
// proceed further code
}
else
{
// code
}
这里标签包含“不匹配”,然后它移动到其他正确的部分。但是当标签包含“超时”时,它会进入if循环内部。所以我修改了这样的代码
If((!label.Text.Contain("No match")) || (!label.Text.Contain("Time out")))
{
// proceed further code
}
else
{
// code
}
仍然没有工作。如果标签包含“超时”,仍然会进入if loop else else loop.Label一次只包含一个文本“No match”或“Time out”或任何其他文本。
答案 0 :(得分:5)
我怀疑你想要:
if(!(label.Text.Contains("No match") || label.Text.Contains("Time out")))
{
// proceed further code
}
else
{
// code
}
请注意包围。内部部分是
label.Text.Contains("No match") || label.Text.Contains("Time out")
然后那就倒了。我可能会把它拉成一个单独的变量:
bool timedOutOrNoMatch = label.Text.Contains("No match") ||
label.Text.Contains("Time out");
if (!timedOutOrNoMatch)
{
}
else
{
}
或者,颠倒它的意义:
if (label.Text.Contains("No match") || label.Text.Contains("Time out"))
{
// Do whatever was in your else block.
}
else
{
// Do whatever was in your first block.
}
如果你对“坏”标签的回复是让你返回或抛出异常的东西,这也可以减少嵌套量:
if (label.Text.Contains("No match") || label.Text.Contains("Time out"))
{
output.Text = "Go away";
return;
}
// Now handle the success case
答案 1 :(得分:2)
尝试使用以下代码:
if(!(label.Text.Contains("No match") || label.Text.Contains("Time out")))
{
// proceed further code
}
else
{
// code
}
如果您希望修改代码,请使用AND运算符:
if(!label.Text.Contains("No match") && !label.Text.Contains("Time out"))
{
// proceed further code
}
else
{
// code
}
答案 2 :(得分:2)
要以更易理解的形式编写代码,您应该以可读且更易理解的方式编写代码。我更喜欢这样写这个语句
bool ProceedFurther()
{
//Don't proceed if No Match
if(!label.Text.Contains("No match")) return false;
//Don't proceed if Time out
if(!label.Text.Contains("Time out")) return false;
//Proceed otherwise
return true;
}
并在所需位置调用ProceedFurther方法。
如果你真的只想要那个陈述,那么以下是最好的(大多数人忘记将||更改为&&并且将条件更改为负数(使用!)。
if(!label.Text.Contains("No match") && !label.Text.Contains("Time out"))