检测到无法到达的代码,使用正则表达式发出警告

本文关键字:正则表达式 警告 代码 检测 | 更新日期: 2023-09-27 17:50:21

我是c#新手,我觉得这可能是一个显而易见的答案,因为我知道错误意味着什么——但我不知道如何修复它!我得到一个"无法到达的代码检测"警告我的第二个if语句,所以我意识到它没有被调用,我只是不明白我的错误在哪里,或者如何去修复它。任何帮助将非常感激!

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

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语句之前有一个return语句:

return re.IsMatch(txtZip.Text);

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

此外,在第二个if语句下面还有不可访问的代码,因为无论在哪种情况下,if语句都会返回一个值,所以:

return value;
valid=false;

将永远不会执行

如果您想检查所有字段应该是字段,然后如果ZIP匹配模式返回TRUE否则FALSE下面的代码就足够了。

因为你的return语句在之前,if/else是代码不可达的原因。因为return总是返回true或false值,所以它永远不会达到IF/ELSE条件。

我认为下面的代码是你想要的。

    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);