关于c#:使用Regex检测到无法访问的代码警告

Unreachable Code Detected Warning with Regex

我对C还比较陌生,我觉得这可能是一个显而易见的答案,因为我理解错误的含义——但我这辈子都看不到如何解决它!我的第二条if语句收到"检测到无法访问的代码"警告,因此我意识到它没有被调用,我只是不知道我的错误在哪里,或者如何修复它。任何帮助都将不胜感激!

我遇到问题的代码片段是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool valid = true;
if (txtFirst.Text.Length < 1 || txtLast.Text.Length < 1 || txtAddress.Text.Length < 1 || txtCity.Text.Length < 1 || txtState.Text.Length < 1)
{
    return false;
}

string usZip = @"^\d{5}$|^\d{5}-\d{4}$";
Regex re = new Regex(usZip);

return re.IsMatch(txtZip.Text);

if (re.IsMatch(txtZip.Text))
    return (true);
else
    return (false);
return valid;
valid = false;


您在第二个if语句之前有一个返回语句:

1
return re.IsMatch(txtZip.Text);

所以下面的代码永远不会执行。

此外,在第二个if下面还有无法访问的代码,因为在这两种情况下,if语句都将返回一个值,所以:

1
2
return value;
valid=false;

也不会执行。


如果要检查所有字段都应为字段,然后如果zip匹配,则模式返回true,否则下面的代码就足够了。

因为之前的返回语句if/else是无法访问代码的原因。因为该返回将始终具有要返回的true或false值,所以它将永远不会达到if/else条件。

我想下面的代码就是你想要的……过来看。。

1
2
3
4
5
6
7
8
    if (txtFirst.Text.Length < 1 || txtLast.Text.Length < 1 || txtAddress.Text.Length < 1 || txtCity.Text.Length < 1 || txtState.Text.Length < 1)
    {
        return false;
    }

    string usZip = @"^\d{5}$|^\d{5}-\d{4}$";
    Regex re = new Regex(usZip);
    return re.IsMatch(txtZip.Text);