C# 并非所有路径都在开关中返回值
即使我已经有一个default子句,我仍然会得到错误 如果type==textboxL且内部条件为false,则函数不会返回任何值。文本框也是如此 请注意,只有在没有进入其他案例的情况下才会调用default,在本例中,您在每个案例的末尾使用break 根据您的逻辑,您可能希望在函数末尾返回true。开关中的if子句在其他方面缺失C# 并非所有路径都在开关中返回值,c#,C#,即使我已经有一个default子句,我仍然会得到错误 如果type==textboxL且内部条件为false,则函数不会返回任何值。文本框也是如此 请注意,只有在没有进入其他案例的情况下才会调用default,在本例中,您在每个案例的末尾使用break 根据您的逻辑,您可能希望在函数末尾返回true。开关中的if子句在其他方面缺失 这样,如果不满足任何情况下的条件,您也会返回一个值。情况下的返回语句位于if块内,因此您的路径不会以返回语句结束。既然您已经在开关情况下使用了if条件,为什么不简单地
这样,如果不满足任何情况下的条件,您也会返回一个值。情况下的返回语句位于if块内,因此您的路径不会以返回语句结束。既然您已经在开关情况下使用了if条件,为什么不简单地创建一个完整的if结构呢?这样,您就可以相当快地找到您的bug。您不仅应该在答案中添加bug,还应该添加代码。因此,如果案例中不满足条件,他应该返回true,而不是编写默认值。
bool Validate(TextBox textBox , string type)
// textboxL - textbox accept only letters of alphabets and space.Is Mandatory
// textboxS - textbox accept letters of alphabets , space , - , _ .Is Mandatory
// return true by default
{
switch(type)
{
case "textboxL":
if (!Regex.IsMatch(textBox.Text, @"^[a-zA-Z]+$") || String.IsNullOrEmpty(textBox.Text)) {
MessageBox.Show("Invalid!!" + textBox.Text + "must contain only letters and shouldn't be empty");
return false;
}
break;
case "textboxS":
if (!Regex.IsMatch(textBox.Text, @"^[a-zA-Z-_ ]+$") || String.IsNullOrEmpty(textBox.Text)) {
return false;
}
break;
default: return true;
}
}
switch(type) {
case "A" : if (condition) return true; else return false; break;
case "b" : if (condition) return true; else return false; break;
...
...
}