并非所有路径都返回开关中的值

本文关键字:开关 返回 路径 | 更新日期: 2023-09-27 18:25:15

即使我已经有了default子句,我仍然会得到错误

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

并非所有路径都返回开关中的值

如果type=="textboxL"和内部条件为false,则函数不会返回任何值。与"textboxS"相同。

请注意,只有当我们没有进入其他case时,才会调用default(在本例中,在每个case的末尾使用break)。

根据您的逻辑,您可能希望在函数末尾使用return true

交换机中的if子句缺少else

switch(type) {
    case "A" : if (condition) return true; else return false; break;
    case "b" : if (condition) return true; else return false; break;
...
...
}

这样,如果任何情况下的条件都不满足,您也会返回一个值。