如果条件的逻辑不起作用

Jui*_*est 3 c# if-statement

我已经在用户看不到的表单中添加了一个标签.基于标签包含的文本继续进行.

这是我的逻辑,但它失败了.我想这样,如果标签包含"不匹配"或"超时",则不应继续.

If((!label.Text.Contain("No match")) || label.Text.Contain("Time out"))
{
// proceed further code
}
else
{
// code 
}
Run Code Online (Sandbox Code Playgroud)

这里标签包含"不匹配",然后它移动到其他正确的部分.但是当标签包含"超时"时,它进入if循环内部.所以我修改了这样的代码

If((!label.Text.Contain("No match")) || (!label.Text.Contain("Time out")))
{
// proceed further code
}
else
{
// code 
}
Run Code Online (Sandbox Code Playgroud)

仍然没有working.If标签包含"超时",但仍然是进入循环,如果没有别的loop.Label包含在同一时间只有一个文本要么"不匹配"或"超时"或其他任何文字.

Jon*_*eet 5

我怀疑你想要:

if(!(label.Text.Contains("No match") || label.Text.Contains("Time out")))
{
    // proceed further code
}
else
{
   // code 
}
Run Code Online (Sandbox Code Playgroud)

请注意包围.内部是

label.Text.Contains("No match") || label.Text.Contains("Time out")
Run Code Online (Sandbox Code Playgroud)

然后那就倒了.我可能会把它拉成一个单独的变量:

bool timedOutOrNoMatch = label.Text.Contains("No match") || 
                         label.Text.Contains("Time out");
if (!timedOutOrNoMatch)
{
}
else 
{
}
Run Code Online (Sandbox Code Playgroud)

或者,颠倒它的意义:

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.
}
Run Code Online (Sandbox Code Playgroud)

如果您对"坏"标签的响应是允许您返回或抛出异常的事情,这也可以减少嵌套量:

if (label.Text.Contains("No match") || label.Text.Contains("Time out"))
{
    output.Text = "Go away";
    return;
}
// Now handle the success case
Run Code Online (Sandbox Code Playgroud)