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