使用正则表达式检测到无法访问的代码警告

时间:2015-05-21 03:55:35

标签: c# unreachable-code

我对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; 

2 个答案:

答案 0 :(得分:2)

在第二个if语句之前有一个return语句:

var gulp = require('gulp');
var bower = require('bower');

gulp.task('bower', function(cb){
  bower.commands.install([], {save: true}, {})
    .on('end', function(installed){
      cb(); // notify gulp that this task is finished
    });
});

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

此外,如果因为if语句在任何一种情况下都会返回一个值,那么你的第二个代码下面也会出现无法访问的代码,所以:

return re.IsMatch(txtZip.Text);

永远不会执行。

答案 1 :(得分:0)

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

因为你在之前的return语句if / else 是无法访问代码的原因..因为返回将始终具有 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);